Обновление скрипта останавливается случайным образом

0

Я работаю над одноразовым PHP (5.2.6) script, который переносит несколько миллионов строк базы данных MySQL (5.0.45) в другой формат в другой таблице, сохраняя (много) релевантных данных в памяти для инкрементных вычислений. Данные вычисляются постепенно. (в кусках около 1000 строк)

script неожиданно останавливается в случайных точках без сообщения об ошибке. Мой вопрос: как я могу узнать, в чем причина остановки script. (таймаут отключения памяти MySQL и т.д.)

У меня есть set_time_limit (0); поэтому это не время ожидания PHP.

  • 0
    Вы получаете хорошие предложения. Убедитесь, что вы не работаете в безопасном режиме, однако, со страницы документации set_time_limit (): «Эта функция не работает, когда PHP работает в безопасном режиме. Нет другого выхода, кроме выключения безопасного режима или изменения времени. предел в php.ini. " php.net/set_time_limit
  • 0
    Всем спасибо. решение было добавить ini_set ('memory_limit', '200M'); Это была действительно проблема с памятью.
Теги:

5 ответов

2
Лучший ответ

см. файл журнала, возможно, это память

вам нужно добавить больше памяти в параметре php.ini memory_limit

1

Вы пытались запустить PHP из командной строки, а не через веб-браузер? Может быть, сервер имеет что-то, что заставляет его упасть, когда оно достигнет определенного использования памяти?

В общем случае операции с массой не должны выполняться с помощью веб-сервера, что может привести к их провалу.

1

Вы можете попробовать повысить уровень сообщений об ошибках (в php.ini) на самом высоком уровне, поэтому он жалуется на большее количество вещей.

Мое первое предположение заключалось в том, что вы ударили ограничение времени выполнения или ограничение памяти, а script было прервано, но вы это поняли.

  • 0
    set_time_limit охватывает ограничение времени выполнения, но не ограничение памяти. Вполне возможно, что предел памяти был достигнут.
1
  • Проверьте свой файл журнала PHP.
  • Включить все отчеты об ошибках
    • error_reporting(E_ALL | E_STRICT);
0

Спасибо всем за помощь (я проголосовал за соответствующие ответы). Проблема была в памяти и установке ini_set ('memory_limit', '200M'); (он один раз script)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню