PHP скрипт для запуска 24/7 - PullRequest
0 голосов
/ 30 января 2011

Можно ли запустить скрипт PHP, чтобы он работал 24/7, а в случае сбоя или чего-либо просто перезапустить?Он не должен открываться в браузере, но каким-то образом на стороне сервера, как cron ... Он на сервере Windows.

Ответы [ 4 ]

0 голосов
/ 31 января 2011

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

Как и другие посты, о которых уже говорилось, создание php-скрипта, который будет работать в течение короткого времени, но может вызываться раз в час или около того, является лучшим способом. Если вам действительно нужна программа, которая действительно работает 24/7, вам понадобится способ скомпилировать ваш код в двоичный файл. Лучшая ставка будет C ++ или Java.

0 голосов
/ 30 января 2011

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

После завершения проверки сделайте что-нибудь, чтобы отметить существование сценария.Стандартом является запись вашего pid в указанное место.Тогда функция проверки может:

  1. Проверить, существует ли файл pid.Нет файла, нет запущенного сценария.
  2. Убедитесь, что pid, указанный в файле, запущен.Нет запущенного pid, нет запущенного сценария.

Существует небольшая вероятность того, что вы получите ложное срабатывание запущенного файла.Например, ваш сценарий получает pid из 12345. Когда он умирает, система перебирает все возможные pid с.Теперь другой процесс использует pid 12345. pidfile будет содержать «12345»;ваш сценарий проверит, что процесс с этим номером работает, увидит, что новый процесс уже существует, и предположит, что ваш сценарий запущен.

Возможно, есть способ обойти эту последнюю проблему, но я не знаю,это.

0 голосов
/ 31 января 2011

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

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

В качестве альтернативы вы можете обрабатывать требуемую обработку на стохастической основе, инициируемой HTTP-запросом, но после завершения синхронной части HTTP-запроса (прочитайте о том, как работает сборка мусора в управлении сеансами). *

Было бы полезно узнать, для чего предназначен скрипт.

0 голосов
/ 30 января 2011

Запустите два скрипта - каждый проверит второй, если он жив :-) - и отключит ограничения по времени в php.ini

...