0

好吧,我下面的代码一次性创建了所有文件,而不是依次经过 1、2、3、4 等等

$i = 0;
while($i < $pages)
{
    $met = $this->articles();
    $myFile = trim($met.".php");

    $fh = fopen($myFile, 'w') or die("Can't create files.");
    $stringData = "<html><head><meta name=\"description\" content=\"" . $met. "\" />
                   <meta name=\"keywords\" content=\"" . $met . "\" /><h1>" . $met . "</h1>
                   <base href='http://gumpic.com/'>".$this->show_web("http://gumpic.com")."</html>";
    fwrite($fh, $stringData);
    fclose($fh);
    $i++;
}

echo "We've created your " . $pages . " pages.";

我将如何通过加载页面,在页面上打印哪些页面已经完成?喜欢;

  1. 完全的
  2. 完全的
  3. 完全的
  4. 待办的

另外,无论如何我可以加快这个脚本的速度。它非常慢,仅在大约 3 分钟内创建 2k 个文件,然后给我一个内部错误。

4

3 回答 3

0

考虑使用一些模板语言,因为每次分配和链接你的输出肯定会产生糟糕的性能。

一些好的库是:

  • Twig [我通常的选择];
  • 聪明的;
  • TI [纯 PHP,少量用于较小目的];

如果您还没有这样做,请考虑编写命令行工具 - 回显到控制台将比写入屏幕更快。

于 2012-09-05T11:26:04.093 回答
0
ob_start();
$i = 0;
while($i < $pages)
{
    $met = $this->articles();
    $myFile = trim($met.".php");

    $fh = fopen($myFile, 'w') or die("Can't create files.");
    $stringData = '<html>
                    <head>
                        <meta name="description" content="' . $met. '" />
                        <meta name="keywords" content="' . $met . '" />
                    </head>
                    <body>     
                    <h1>"' . $met . '"</h1>
                   <base href="http://gumpic.com/">'.$this->show_web("http://gumpic.com").'</body>
                  </html>';
    fwrite($fh, $stringData);
    fclose($fh);
    echo 'Created page ' . ($i+1) . '<br/>';
    flush();
    ob_flush();
    $i++;
}

echo "Done generating " . $i . "pages.";
于 2012-09-05T11:31:33.263 回答
0

该脚本的速度主要取决于硬盘驱动器的速度。操作系统如何处理打开和写入访问。

如果您想要显示进度,只需echo("Processing ".$i."\n");while循环中包含一个并用 . 刷新缓冲区flush()。确保echo str_repeat(" ", 1024), "\n";在脚本开始时发送以强制浏览器显示内容而无需等待大量数据。

用于set_time_limit()为您的脚本提供更多处理时间。

于 2012-09-05T11:23:58.897 回答