Настройка скрипта PHP как службы Windows

Мне нужно настроить PHP-скрипт как службу Windows.

Мне нужно, чтобы он запускался независимо от того, какой пользователь входит в систему, и при запуске системы – так что лучше всего использовать службу Windows, но я рад услышать другие предложения.

(Этот скрипт работает непрерывно, это не «запуск каждые 5 минут», я мог бы использовать диспетчер запланированных задач для.)

http://support.microsoft.com/kb/251192 использует программу sc.exe для установки вашей службы.

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

Solutions Collecting From Web of "Настройка скрипта PHP как службы Windows"

Возможно, инструменты Resource Kit (в частности, srvany.exe) могут помочь вам здесь. MSDN: как создать пользовательскую услугу, и, возможно, этот намек на 2008 Server должен помочь вам настроить любой исполняемый файл в качестве службы. (Я успешно использовал это на Windows 2003 Server, Windows 2008 Server и Windows XP Professional [другой Resource Kit, хотя])

Вы создали бы bat, содержащий php your-script.php , оберните это с помощью srvany.exe и voila, скрипт запускается после загрузки машины.

srvany.exe должен обрабатывать эти вызовы start / stop / restart, которые вы ожидаете от запуска демона. Он будет загружать ваш исполняемый файл при запуске, убить процесс на остановке, сделать как при перезагрузке. Поэтому вам не нужно беспокоиться об этой части. Вы можете проверить, может ли register_shutdown_function () идентифицировать, когда ваш сервисный процесс убит.

Вы даже можете определить зависимости к другим службам (например, некоторые базы данных или некоторые из них).

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\THENAMEOFYOURSERVICE] "DependOnService"="DEPENDONTHIS" 

замените THENAMEOFYOURSERVICE на имя, которое вы предоставили для своей службы, и DEPENDONTHIS с именем службы, DEPENDONTHIS (скажем, «Postgres9.0» или что-то в этом роде). Сохраните этот файл на dependency.reg и загрузите его с помощью regedit /s dependency.reg . (Или дважды щелкните его в проводнике …)

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

Вы можете запустить php в командной строке, указав разные параметры, а также файл сценария в качестве параметра. Если вы добавите всю строку в конфигурацию службы, она должна работать. Таким образом, вы также можете попробовать устройство перед созданием службы. Если php-скрипт находится вне вашего веб-маршрута, возможно, вы должны добавить папку в PATH-Variable из окон.

Я нашел это, но сам не пробовал. На самом деле PHP имеет некоторые функции для этого: http://uk.php.net/manual/en/book.win32service.php

Вот несколько примеров: http://uk.php.net/manual/en/win32service.examples.php

 <?php if ($argv[1] == 'run') { win32_start_service_ctrl_dispatcher('dummyphp'); while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) { # do your work here. # try not to take up more than 30 seconds before going around the loop # again } } ?> 

Через несколько дней … я нашел этот великолепный вариант!

Он создает .exe, которые восстанавливают параметры сервиса и отлично работают!

https://superuser.com/questions/628176/php-cgi-exe-as-a-windows-service/643676#643676

команда правильная:

sc создать FOO binPath = "service.exe \" C: \ php \ php-cgi.exe -b 127.0.0.1:9000 -c C: \ php \ php.ini "\" type = собственный start = auto error = игнорировать DisplayName = "FOO php"