2011-08-07 65 views
0

我有以下文件,其中處理單個XML文件並將其作爲一行推送到數據庫中。它爲完美工作單個文件。服務器可以處理多少時間有限制嗎?

現在我想把所有目錄中的文件這樣到數據庫中,因此寫了一個腳本走了過來目錄,並通過一個一個推它的所有文件。而是它的工作,但處理文件的XX(可變)數量後停止

我雖然可能是壞了我的XML文件,因此決定只具有單一的XML文件(這是完美的處理早些時候)在目錄中,只是循環它,插入它數百次,以便我可以證實它與我的文件有問題。但是猜猜發生了什麼?

處理XX(可變)數量的文件後,處理停止。在我下面的例子中,經過反覆嘗試,它停在110(counter val),111,99等。它應該在哪裏處理1000個文件。

<?php 
include_once '../includeTop.php'; 

header ('Content-type: text/xml'); 

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; 
$dir = "../../newHotelFiles"; 
$file = NULL; 
$fileName = "noFileName"; 

$processed = 0; 
util::writeToLog ($dir . '/progressData.tmp', "Files processed: $processed"); 
try { 

    echo XMLInterface::openTag ("start"); 
    for($counter = 0; $counter < 1000; $counter ++) { 
     $dirHandle = opendir ('../../newHotelFiles'); 
     while (false !== ($file = readdir ($dirHandle))) { 
      //process my files codes 

       $processed ++; 
       util::writeToLog ($dir . '/progressData.tmp', "Files processed: $processed"); 


      } 

     } 

    //util::writeToLog($dir.'/progressData.tmp', "Done ".$counter); 
    } 
    echo XMLInterface::closeTag ("start"); 
    exit(); 
} catch (Exception $e) { 
    echo XMLInterface::failure ("Error occured. Written to the log file - $file.log"); 
    util::writeToLog ("../../newHotelFiles/$fileName.log", ExceptionHandler::error_msg ($e)); 
    exit(); 
} 

?> 

什麼問題?是否它的腳本(我懷疑,因爲它的工作時for循環不存在)或是否有任何serverside限制我不知道

+0

沒有真正相關,但爲什麼你使用PHP來做到這一點? PHP被用作模板語言,而不是編程語言。將其導出到單獨的腳本中,以便您的Web服務器不會佔用太多處理空間(使用Python或其他)。 – tjameson

+0

@tjameson在所有應有的尊重下,意圖都沒有想到這麼多,所以我想。 'PHP'雖然遠離我個人最喜歡的語言,但它完全符合Turing,並且非常適合做OP似乎正在做的事情。另外,就像Perl命名一樣,您可以在命令行上調用它,而不依賴於Apache,HTTP,CGI等。 – amn

+1

@footy您是否知道可以從命令行調用'PHP'作爲解釋器?這很可能會消除你的超時錯誤的原因,如果你的代碼一切正常,你不需要與HTTP,CGI或Apache(對不起,重複自己)有關的API的一部分,那麼你總是比較好。使用'php -f/path/to/file.php'。儘管並非所有的PHP發行版都附帶了命令行解釋器,但確實很方便。 – amn

回答

2

在php中有一個最大執行時間限制稱爲set_time_limit(); (沿其他人)

 set_time_limit(0); // sets to unlimited 
+0

我讚揚你的慷慨,並提供了正確的答案(不是諷刺),但是我有這個(沒有根據的)恐懼,你只是讓@footy用自己的PHP + Apache品牌的霰彈槍在自己的腳下射擊:/我指的是事實正確地指出,涉及(生產)網絡服務器的簡單處理文件和將數據存儲在數據庫中的事實是許多不好的地方的一扇門。 – amn

相關問題