sending - restart php fpm ubuntu 14
ConfiguraciĆ³n de un script PHP como un servicio de Windows (5)
Necesito configurar un script PHP como un servicio de Windows.
Necesito que se ejecute independientemente del usuario que haya iniciado sesión y en el inicio del sistema, por lo que parece que es mejor un servicio de Windows, pero me complace escuchar otras sugerencias.
(Esta secuencia de comandos se ejecuta continuamente, no es una tarea de "ejecutar cada 5 minutos" para la que podría usar el Administrador de tareas programadas).
http://support.microsoft.com/kb/251192 cubre el uso del programa sc.exe para instalar su servicio.
Pero por lo que he leído, necesito tener una envoltura alrededor del script PHP para aceptar los comandos especiales del administrador de servicios de Windows. ¿Alguien puede ayudarme con esto?
Después de unos días ... encontré esta magnífica opción!
¡Construye un archivo .exe que recibe las opciones de servicio y funciona bien!
https://superuser.com/questions/628176/php-cgi-exe-as-a-windows-service/643676#643676
el comando correcto:
sc create FOO binPath = "service.exe /" C: / php / php-cgi.exe -b 127.0.0.1:9000 -c C: / php / php.ini "/" type = own start = auto error = ignore DisplayName = "FOO php"
Encontré esto pero no lo he probado yo mismo. PHP en realidad viene con algunas funciones para hacer esto: http://uk.php.net/manual/en/book.win32service.php
Aquí hay algunos ejemplos: 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
}
}
?>
Puede ejecutar php en la línea de comandos dando diferentes parámetros y también el archivo de script como parámetro. Si agrega la línea completa que necesita en la configuración del servicio, debe ejecutarse. Por lo tanto, también puede probar el dispositivo antes de crear el servicio. Si el script php está fuera de su ruta web, tal vez debería agregar la carpeta a la variable PATH de windows.
Tal vez las herramientas del kit de recursos (específicamente srvany.exe) pueden ayudarlo aquí. MSDN: cómo crear un servicio definido por el usuario y, posiblemente, esta sugerencia para 2008 Server debería ayudarlo a configurar cualquier ejecutable como servicio. (Lo he usado con éxito en Windows 2003 Server, Windows 2008 Server y en Windows XP Professional [aunque también hay otro Kit de recursos])
Debería crear un bate que contenga php your-script.php
, envuélvalo con srvany.exe y listo, el script se inicia una vez que la máquina carga los servicios.
srvany.exe debe manejar esas llamadas de inicio / detención / reinicio que espera que ejecute un demonio. Cargaría su ejecutable en el inicio, detendría el proceso en la detención, haga ambos al reiniciar. Así que no tienes que preocuparte por esta parte. Es posible que desee comprobar si un register_shutdown_function() puede ayudar a identificar cuándo finaliza su proceso de servicio.
Incluso puede definir dependencias a otros servicios (por ejemplo, alguna base de datos o algo similar).
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/THENAMEOFYOURSERVICE]
"DependOnService"="DEPENDONTHIS"
reemplace THENAMEOFYOURSERVICE
con el nombre que le dio a su servicio y DEPENDONTHIS
con el nombre del servicio para depender (por ejemplo, "Postgres9.0" o algo así). Guarde ese archivo en dependency.reg
y cárguelo con regedit /s dependency.reg
. (O haz doble clic en el explorador ...)
Utilizamos FireDaemon para esta tarea, no requiere scripts de envoltura, etc. Lamentablemente no es un software gratuito.