Сценарий PHP прекращает работать произвольно без ошибок

У меня есть Сценарий PHP, который, казалось, прекратил бежать приблизительно за 20 минутами.

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

Я нашел, что то же самое происходило с этим простым бесконечным циклом. В какой-то момент между 15 и 25 минутами выполнения, это останавливается без любого сообщения или ошибки. Браузер говорит "Сделанный".

Я был по каждой возможной вещи, о которой я мог думать:

set_time_limit ( session.gc_maxlifetime in the php.ini)
memory_limit
max_execution_time

Точка, что сценарий останавливается, не последовательна. Иногда это будет останавливаться в 15 минут, иногда 22 минуты.

Любая справка значительно ценилась бы.

Это размещается на a 1and1 сервер. Я связался с ними, и они не оказывают поддержку для ошибок, вызванных разработчиками.

7
задан Eric Leschinski 19 May 2015 в 02:31
поделиться

5 ответов

Я ценю комментарии каждого. Особенно Джеймс Хартиг, вы были очень полезны и послали меня на правильном пути. Я до сих пор не знаю, какова была проблема. Я получил его, чтобы запустить на сервере с использованием SSH, просто используя команду exec (), а также ignore_user_abort (). Но это все равно было бы время. Итак, мне просто пришлось сломать его на небольшие кусочки, которые будут работать всего около 2 минут каждый, и используют переменные / массивы сеансов для хранения, где я остановился. Я рад сделать с этим довольно простым проектом сейчас, а также в высшей степени бесится в 1 и1. Ну хорошо ...

0
ответ дан 7 December 2019 в 01:21
поделиться

Вы считаете, что вы просто запустили скрипт из командной строки, например:

php script.php

и у сценария вымыли сообщение каждый чаще, что его все еще работает:

<?php

while (true) {
  doWork();
  echo "still alive...";
  flush();
}
3
ответ дан 7 December 2019 в 01:21
поделиться

Я думаю, что вам нужно выяснить, - точное время, которое он останавливается (вы можете установить начальное время и продолжать выбросить текущее время минус инициала). Есть что-то на стороне сервера, которая останавливает файл. Кроме того, рассмотрите возможность выполнения INI_GET, чтобы проверить, чтобы убедиться, что время выполнения на самом деле 0. Если вы хотите, установите время до 30, а затем каждая петля, которую вы делаете, продолжайте настройку в 30. Каждый раз, когда вы вызываете Set_Time_limit, счетчик сбрасывает и Это может позволить вам обойти фактические пределы. Если это все еще не работает, есть что-то на 1 и 1-е годы, которые могут убить скрипт.

Также вы попробовали IGNORE_USER_ABORT?

1
ответ дан 7 December 2019 в 01:21
поделиться

В какой-то момент ваш браузер времена выходит и перестает загружать страницу. Если вы хотите проверить, откройте командную строку и запустите там код. Сценарий должен работать на неопределенный срок.

4
ответ дан 7 December 2019 в 01:21
поделиться

Я думаю, это вызвано тем, что какой-то монитор процессов убивает «зомби-процессы», чтобы предоставить ресурсы другим пользователям.

Запустите exec с помощью «2> & 1», чтобы записать что-либо, включая stderr.

В моем выводе мне удалось уловить следующее:

...
script.sh: line 4: 15932 Killed                  php5-cli -d max_execution_time=0 -d memory_limit=128M myscript.php

Итак что-то (внешняя сила, а не сам PHP) убивает мой процесс!

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

0
ответ дан 7 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: