PHP-скрипт завершается до истечения времени ожидания без ошибок - PullRequest
7 голосов
/ 18 марта 2012

У меня есть PHP Script, для его завершения требуется время выполнения не менее 1000 секунд.

Завершается примерно через 265 секунд каждый раз без ошибок. Поскольку я использую циклы, я протестировал количество итераций, и оно не зависит от этого, что дополнительно исключает возможность возникновения ошибки в цикле.

Я установил max_execution_time в 10800 в php.ini, а также изменение memory_limit не влияет на результаты.

Пожалуйста, помогите! Я тщательно почесал голову!

Ответы [ 4 ]

0 голосов
/ 18 июня 2015

В PHP единственный способ скрыть ошибки из журналов, даже когда display_errors и error_reporting правильно указаны, - это использовать Операторы контроля ошибок ,

например: следующий код вызовет фатальную ошибку, но «скрытую», она не появится ни в журналах, ни в браузере.

@echo "forgetting the last quote;

Поэтому установите для display_errors значение On и error_reporting в зависимости от используемой версии PHP (см. Различия здесь ) и проверьте, используете ли вы символ «@» в своем коде.

0 голосов
/ 18 марта 2012

Вы проверяли свой лог-файл? Если вы получаете ошибку 6 или ошибку сегментации. Тогда ваш скрипт фактически выдает php, не показывая никаких ошибок в браузере (если это браузер, а не cli).

Если вы используете apache в unix, вы должны найти этот журнал в /var/log/apache2/error.log.

В противном случае вы можете определить путь к файлу журнала в .htaccess, добавив эту строку:

php_value error_log "/path/to/somewhere/convenient/php_errors.log"

Измените путь туда, где у вашего httpd есть разрешение на запись и где у вас есть разрешение на чтение.

0 голосов
/ 20 мая 2015

Эта же ошибка произошла со мной. Одна из моих функций PHP умерла без каких-либо ошибок, отправленных в stderr, stdout или любой другой файл журнала.

Произошло то, что я использовал вспомогательный PHP-скрипт, написанный другим разработчиком, который устанавливал ограничение памяти в 512 МБ на полпути во время работы моей программы. Подмодуль отравил скважину, также установив в журнале ошибок настройки в автоматическом режиме в какой-то момент в процессе обработки моего сценария.

Вы можете доказать, происходит ли это с вами, распечатав системные настройки php, доступные для вашего PHP-скрипта на КАЖДОЙ итерации цикла. Когда подстрочный индекс выполнил грязное дело, механизм PHP выбрасывает его после того, как сборщик мусора будет работать в случайном порядке в будущем, а затем сразу же умрет без ошибок. Это ошибка в сборщике мусора PHP, когда подмодули связываются с настройками системы, когда сборщик мусора выполняет свою работу.

Решение: Отредактируйте вспомогательные модули php и убедитесь, что они не изменяют настройки системы, поскольку сборщик мусора выполняет свою работу. Интерпретатор PHP сходит с ума и умирает без каких-либо ошибок или выводится через произвольный интервал после отравления системных переменных PHP.

0 голосов
/ 18 марта 2012

дают:

set_time_limit(0);

в начале скрипта.так что выполнение кода не остановится, пока оно не будет завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...