2012-09-05 111 views
0

嗯,我有下面的代碼創建的所有文件中一氣呵成,而不是通過1走,然後2,然後3,然後4然後等創建一個PHP文件單獨

$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文件,然後給我一個內部錯誤。

+0

我的意思是2K的文件,而不是2000K –

+0

您可以【點擊你的問題下的編輯鏈接](http://stackoverflow.com/posts/12280263/edit),如果你要修復這樣的錯誤。 – ghoti

+0

我可以在這裏知道用例嗎? – mtk

回答

0

該腳本的速度主要取決於硬盤的速度。此外操作系統對待開放和寫入訪問的能力如何。

如果您想要一個顯示進度,只需在while循環中包含一個echo("Processing ".$i."\n");,並用flush()刷新緩衝區。確保在腳本啓動時發送echo str_repeat(" ", 1024), "\n";以強制瀏覽器顯示內容,而不必等待大量數據。

使用set_time_limit()可爲腳本提供更多處理時間。

+0

嗨,我會在哪裏把刷新?它仍然只顯示加載頁面。 –

+0

緊接在echo指令之後。 flush()強制緩衝區爲空,以便將內容發送到瀏覽器。 –

0

考慮使用一些模板語言,因爲每次分配和鏈接你的輸出肯定會有不好的表現。

一些好的庫將是:

  • Twig [我平時挑]。
  • Smarty;
  • TI [純PHP,少數用於較小的目的];

考慮寫一個命令行工具,如果你還沒有做 - 迴應控制檯將比寫入屏幕更快。

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.";