Когда заканчивается сценарий без указания причины? - PullRequest
0 голосов
/ 09 марта 2011

Я использую скрипт с set_time_limit (60 * 60 * 24) для обработки большого количества изображений. Но после 1 000 изображений или около того (1 или 2 минуты) сценарий останавливается, не показывая никаких ошибок в командной строке.

Я также использую регистратор, который записывает в файл любую ошибку, сгенерированную сценарием, при завершении работы (с помощью register_shutdown_function). Но когда этот сценарий останавливается, ничего не пишется (он должен что-то написать, даже если не было выдано никаких ошибок. Он отлично работает с любым другим сценарием, в любой другой ситуации, которую я когда-либо имел).

Apache error_log тоже ничего не показывает.

Есть идеи?

Редактировать: Моя среда - Centos 5.5, с php 5.3.

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Пожалуйста, убедитесь, что вы не работаете в безопасном режиме:

http://php.net/manual/en/features.safe-mode.php

1 голос
/ 09 марта 2011

Обратите внимание, что register_shutdown_function НЕ гарантирует, что связанная функция будет выполняться каждый раз.Так что вам не следует полагаться на .

см. http://php.net/register_shutdown_function

Для устранения проблемы проверьте журнал ошибок PHP.(, который НЕ является журналом ошибок apache , когда вы используете PHP из консоли. Проверьте свой PHP.ini или ini_get ('error_log'), чтобы узнать, где он находится.)

AРешением может быть написание простого сценария-оболочки в bash, который выполняет сценарий и затем выполняет то, что вы хотите, чтобы он выполнялся в конце сценария.

Также обратите внимание, что PHP не считает время, потраченное на внешние, не php, действия, такие как сетевые вызовы, некоторые функции библиотек, магия изображений и т. д. Таким образом, установленный вами срок может фактически длиться намного дольше, чем вы ожидаете.

1 голос
/ 09 марта 2011

Возможно, недостаточно памяти.

ini_set('memory_limit', '1024M');

Может привести вас в порядок, если вы сможете выделить столько.

...