Таким образом у меня есть относительно простой PHP скрипт, которыйPHP скрипт продолжает выполняться даже после выхода()
Считывает ~ 70 XML-файлы из удаленного сервиса отдыха;
Парсы читают XML-файлы с использованием класса SimpleXMLElement (многие новые вызовы SimpleXMLElement());
Вывод в файл json закодированного массива, который содержит ассоциативные массивы, в которых каждый массив имеет несколько атрибутов, представляющих интерес для этих XML-файлов.
Проблема со сценарием заключается в том, что он заканчивается намного позже, чем выводит результат в файл. Я googled вокруг, но не мог найти ничего, что могло бы вызвать такую проблему. Ниже приведен упрощенный код, описывающий мой сценарий.
function parseFiles()
{
$fileData = array();
$parsedData = array();
// read files using curl, output is an array of SimpleXMLElements
readXMLFiles($fileData);
// for each XML object create an assoc array which contains attributes
// of interest, add it to $parsedData
parseData($fileData, $parsedData);
file_put_contents("test.txt", json_encode($parsedData));
/*
This is where the problem occures, the scipt outputs result to the file
MUCH faster than it ends execution for example file is created with data
in ~ 15 seconds but the script ends in 60 seconds
(so the exit() command took 45 seconds????)
*/
exit();
}
Может ли это быть вызвано какой-то сборкой мусора после выхода()? Эти объекты XML относительно велики ... Также я попытался запустить скрипт на стеке wamp, а на PHP, apache, запущенном на centos, проблема, похоже, происходит на компьютере centos.