PHP: Как я могу убедиться, что мой скрипт долго работает? - PullRequest
1 голос
/ 15 февраля 2012

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

Несмотря на то, что сценарий работает, возможно, некоторые почтовые ящики IMAP очень велики и сценарий выполняется в течение длительного времени.Я знаю, что могу установить ограничение по времени для моего сценария, чтобы оно никогда не заканчивалось с использованием: set_time_limit(0)

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

Я не совсем уверен в правильной терминологии, когда задаю такой вопрос, поэтому я надеюсь, что я дал понять,:)

РЕДАКТИРОВАТЬ: Я только что видел функцию ignore_user_abort(), но я не уверен, как это позволит мне вернуться на ту же страницу и посмотреть, если процессвсе еще работает, остановлен из-за ошибки или из-за ошибки.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Настройте задачу cron для запуска вашего скрипта и сделайте так, чтобы он записывал свой статус в текстовый журнал где-нибудь. Тогда все, что вам нужно сделать, это проверить ваши журналы.

1 голос
/ 15 февраля 2012

В обычном HTTP-запросе PHP запускается как подпроцесс другой программы.Обычно это Apache, но все зависит от того, какой у вас веб-сервер.Проблема в том, что даже при наличии опций в PHP всегда есть шанс, что веб-сервер завершит процесс PHP по разным причинам.

Лучшее решение для использования долго работающего PHP-скрипта - запуститьСкрипт через интерфейс командной строки (CLI) http://php.net/manual/en/features.commandline.php

Там он может работать столько, сколько захочет.Я бы по-прежнему использовал set_time_limit(0), но проверьте приведенную выше ссылку на предмет специфики.

Кроме того, если у вас нет доступа к командной строке на вашем сервере, как правило, вы будете иметь доступ к некоторому видупланировщик задач (CRON в Linux).Обычно они работают, выполняя команду, как если бы она находилась в командной строке, поэтому вы можете настроить задачу для запуска сценария PHP по требованию.

Что касается обновлений состояния.Вы можете сделать так, чтобы код миграции записывал статус в базу данных или текстовый файл.Затем вы создаете вторую обычную страницу PHP, которая отображает обновления статуса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...