Назад | Перейти на главную страницу

рабочий apache + php fastcgi, длинный скрипт

Моя проблема в том, что длинные скрипты php (несколько часов) выходят рано. (FireFox сообщает, что «соединение с сервером было сброшено во время загрузки страницы»).

Они выходят иногда через 30 минут, иногда через 1:45 часа работы.

Для FastCGI я добавил следующее в httpd.conf через редактор включений WHM в post_virtualhost:

<IfModule mod_fcgid.c>
FcgidBusyTimeout 86400
FcgidIOTimeout 86400
</IfModule>

После этого раздела IfModule у меня есть раздел <Directory path / to / mysite> (без пробела после '<').

Я много раз использую set_time_limit () и ignore_user_abort () в скрипте, чтобы он работал.

В журналах ошибок apache ничего нет.

phpinfo: http://lot-art.com/info.php (вы можете видеть, что set_time_limit () и ignore_user_abort () работают)

Он отлично работал на моем старом сервере, на котором выполнялся mod_php: http://216.119.148.91/info.php

Просто запустите скрипт отдельно от веб-сервера через cron / и т. Д.

Если вам нужно запустить его с веб-сервера ... popen (nohup ..) и запустите скрипт на кли ...

Я предполагаю, что соединение с веб-сервером / браузером истекает / не работает, и в конечном итоге стек TCP говорит: «Мы закончили здесь», и процесс php прерывается. Я бы не хотел представить окно браузера, ожидающее несколько часов, пока скрипт не запустится. полная ...

Если вы действительно хотите это сделать ... и проблема действительно связана с подключением клиента, вы можете посмотреть, как установить ignore-user-abort в значение true в скрипте / php.ini ...

http://php.net/manual/en/function.ignore-user-abort.php

Возможно ли, что это связано с ошибкой в ​​PHP 5.5? Что-то вроде ошибки сегментации приведет к немедленному завершению работы php - не будет никаких ошибок, зарегистрированных в AFAIK.

Я согласен, что вам, вероятно, следует запустить его из командной строки, если это ошибка сегмента или что-то подобное, попробуйте запустить его gdb, чтобы получить дамп ядра и сообщить об этом как об ошибке здесь: https://bugs.php.net/

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