2013-12-23 6 views
0

Я создаю xml-файл из SQL-запроса с использованием PHP. Если запрос возвращает более чем около 500 записей, файл XML написан не полностью, и я получаю сообщение об ошибке от сервера PHP говоря:php Ограничение размера файла XMLwriter

«Сервер временно не в состоянии обслуживать свой запрос из-за простой обслуживания или емкость проблем. "

Я не уверен, что я делаю это правильно или нет. Я могу сделать то же самое в VB без проблем. Готовый sql-запрос должен иметь около 5000 записей и иметь размер около 4 МБ.

Вот код, я использую:

$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

Благодарим за помощь, я собираюсь реализовать то, что вы предложили. После некоторого тестирования выясняется, что это мой запрос оракула, который веб-сервер не может обработать. Кажется, тайм-аут. Как включить ведение журнала ошибок PHP, чтобы узнать, что происходит? – user3101337

+0

Пожалуйста, смотрите здесь: http://php.net/errorfunc.configuration – hakre

Смежные вопросы