2013-12-23 96 views
0

我從使用PHP的sql查詢創建一個xml文件。 如果查詢返回超過500的記錄越多,XML文件沒有完全寫入和我從PHP服務器一個錯誤消息說:php XMLwriter文件大小限制

「服務器由於維護停機或暫時無法服務您的 要求容量 問題。「

我不知道我是否正確地做了這件事。我可以在VB中做同樣的事情沒有問題。完成的sql查詢應該有大約5000條記錄,大小約爲4mb。

這裏是我使用的代碼:?

$writer = new XMLWriter(); 
$writer->openUri('mydoc.xml'); 
$writer->startDocument('1.0', 'UTF-8'); 
$writer->setIndent(4); 
$writer->startElement('FE_Time'); //create root element 

while ($row = oci_fetch_assoc($db->result)){ 

    //I load data from the oracle query into variables and use them below: 

    $writer->startElement('Item'); //create item element 
     $writer->writeElement("Plate_No", $Plate_No); 
     $writer->writeElement("Job_No", $Job_No); 
     $writer->writeElement("Hold_Time", $Hold_Time); 
     $writer->writeElement("OE_Time", $OE_Time); 
     $writer->writeElement("Ship_Date", $Ship_Date); 
    $writer->endElement(); //end the Item Element 
} 

$writer->endElement(); //end the FE_Time root element 
$writer->endDocument(); //close the document 
$writer->flush(); //clear the memory 

unset($db); //close db connection 

任何幫助您能給將不勝感激,我「米思維必須有多少條記錄的XmlWriter可以處理的限制

回答

0

你給的錯誤消息:

「服務器由於維護停機或容量問題,暫時無法服務您的要求。」

不是PHP的特定錯誤消息,而是來自您的網絡服務器。啓用PHP錯誤日誌記錄,找到錯誤日誌並找到描述更詳細信息的確切錯誤。

到目前爲止的故障排除。

通用錯誤消息提示您已用盡腳本資源。這可能是因爲你的腳本崩潰,內存耗盡或者耗盡時間(我只能猜測,並不能說PHP錯誤不存在,所以這只是一個大方向)。

,你可以做一個潛在的事情是沖洗

$writer->flush(); //clear the memory 

搬進while循環,使該文件被寫入到磁盤的每個$row

while ($row = oci_fetch_assoc($db->result)) { 

    ... 

    $writer->endElement(); //end the Item Element 
    $writer->flush(); 
    ################# 
} 

而且

$writer->endDocument(); 

也會刷新XMLWriter,所以你不需要在該方法調用之前調用它一行。

希望這可以幫助你獲得運轉的東西。

+0

謝謝你的幫助,我要實施你的建議。經過一些測試後,事實證明,這是我的oracle查詢,Web服務器無法處理。它似乎超時。如何啓用PHP錯誤日誌記錄來查看發生了什麼? – user3101337

+0

請看看這裏:http://php.net/errorfunc.configuration – hakre