Работа скрипта >>> 2 часов

zarus

Хитрожопый макак
Автор оригинала: white phoenix
Kelkos
> А вот на общественном такие вещи не получаются.
На любом нормально хостинге есть cron, даже когда 10 минут, ничего страшного, время простоя минимальное, ~2 дня работает а потом максимум 10 минут простой.
Некоторые даже платные хостинги запрещают на крон вешать запуск скрипта чаще 1 раза в час, но это уже мелочи - можно повесить Н скриптов со смещением :)
З.Ы. Это все, конечно вы хорошо расписали, но отвал PHP от MySQL - это не проблема и задается в настройках php.ini. Да и не на MySQL это происходит.
Вариант с записью в файл результатов тоже хорош. Но тогда остается проблема извлечения ошибок в ходе выполнения скрипта. Как можно написать универсальный обработчик ошибок? ini_set('error_hanlder',...)?

-~{}~ 30.12.05 09:53:

Автор оригинала: Денч
Я правильно понял - пользователь должен наблюдать процесс работы скрипта от1-2 часов до 2-3 дней? Гдеж такие пользователи водятся?
Таких нигде. Но это очевидно, что в любой момент времени юзер должен знать, что происходит + он должен быть оповещен, что обработка закончена. Помимо этого мне нужно получить список ошибок в процессе работы скрипта, чтобы искать ошибки в коде. Причем, ошибки возникают обычно при отработке свыше 2-3 часов, что в режиме отладки довольно сложно отловить. А ждать по 2-3 часа ради одной ошибки - это роскошь.
 

a1omsk

Новичок
Возникла проблема. У меня выделенный сервер.
Поставил set_time_limit(0);
php.ini:
max_execution_time = 30
max_input_time = 60

Запускаю ресурсоёмкий процесс (нужно распарсить 40k файлов в базу), через 5 минут скрипт останавливается.
В чём причина?
Где чего подкрутить нужно?
 

zarus

Хитрожопый макак
Автор оригинала: a1omsk
Возникла проблема. У меня выделенный сервер.
Поставил set_time_limit(0);
php.ini:
max_execution_time = 30
max_input_time = 60

Запускаю ресурсоёмкий процесс (нужно распарсить 40k файлов в базу), через 5 минут скрипт останавливается.
В чём причина?
Где чего подкрутить нужно?
1. Установить по совету white_phoenix - ignore_user_abort(true);
2. Посмотреть, а не останавливается ли скрипт - т.е. сделать вывод в файл и мониторить этот файл на наличие изменений. Если скрипт останавливается, то:
а) Проверить настройки Apache - там тоже есть настройки, подобные max_execution_time
б) Проверить шаги скрипта - возможно он вылетает из-за нехватки системных ресурсов. Надо оптимизировать скрипт, или даже менять алгоритм работы.

Лично у меня был момент, когда скрипт вылетал. Ошибка заключалась в том, что группа () в регулярных выражениях не может содержать строку более 8000 символов.
 

zarus

Хитрожопый макак
Автор оригинала: a1omsk
Спасибо, сейчас ignore_user_abort(true) проверю
А вообще, бросайте это дело - писать такие скрипты на PHP - не для этого он создавался. Посмотрите в сторону C#. OOP + Regex + .NET, что еще для счастья надо?
з.ы. Одинаковый код (в рамках различий написания кода) на C# выполняется раз в 10-20 быстрее. Один минус - привязанность к .NET, а на сервер его ставить долго и муторно. Под Unix - вообще задача из нереальных :)
 
Сверху