portable - xampp php tutorial
Ejecute el comando antes de salir de apache/xampp (3)
OMI, le sugiero que haga un archivo por lotes que detenga Apache y llame a su comando de limpieza antes o después de detener el comando.
De esta forma, el archivo por lotes es independiente de XAMPP en caso de volver a instalar o cambiar el entorno.
El paso para alcanzar el objetivo:
- Ejecute
cmd
como administrador - Vaya a su carpeta XAMPP Apache bin
- Instalar Apache como servicio,
httpd -k install
- Ahora debería poder iniciar y detener manualmente Apache por línea de comando
httpd -k stop
httpd -k start
Puede aprender más comandos, consulte el enlace
- Ahora haga que un archivo de proceso por lotes lo llame lo que quiera, haga el trabajo de limpieza y colóquelo antes o después de detener o iniciar Apache
Ejemplo para probar cleanandstopapache.bat
:
clean.bat // or what ever calling cleaning command.
pause // just to test pause
httpd -k stop // stops Apache
Notas:
- Normalmente, inicia y detiene su XAMPP a través de GUI. El uso del servicio tiene el mismo efecto, el único diferente es que se ha utilizado la línea de comando para iniciar y detener su Apache, que dice que puede colocar cualquier script antes de detener a Apache para que haga el trabajo.
- Puede usar servicios XAMPP GUI o XAMPP, no ambos.
- Lo he probado en mi máquina y funciona.
- Es posible darle al servicio un nombre personalizado único para que pueda verlo en Servicios de Windows.
¿Hay alguna manera de ejecutar un comando / método cuando Apache está a punto de salir?
Tengo una aplicación que se ejecuta en Windows con Xampp (uso local solamente) y quiero hacer algún tipo de método de limpieza cuando el usuario finaliza esta aplicación, lo que sucede cuando se presiona el botón de detención de Apache.
Entonces, ¿hay algún tipo de evento disparado por xampp o apache, o incluso php que pueda usar? Y el comando puede ser de cmd, php, lo que sea.
OBS: debe ser algo antes de que apache esté cerrado, por lo que comprobar la lista de procesos de Windows no es una opción.
Hay una GRAN diferencia entre el final de la aplicación y Apache-end. ¿A cuál te refieres?
Si necesita un apagado limpio durante pero al final de su Aplicación, use un método __deconstruct()
en la clase correspondiente.
Si necesita un paso más adelante en el tiempo, use una combinación de ignore_user_abort()
y register_shutdown_function()
.
Si se refiere a la detención de Apache, debe buscar un script o herramienta que observe la lista de procesos y actúe cuando el proceso de Apache no esté en esta lista.
Puede inspirar con una respuesta que funciona bien para esta pregunta de " Ejecutar script PHP en segundo plano en Apache start / restart (Windows Server) "
Aquí el enlace de mi solución
En tu caso, debes reemplazar
%APACHE_HOME%/bin/httpdVendor.exe -k runservice
por
%APACHE_HOME%/bin/httpdVendor.exe -k stopservice
No probé este caso, y espero que te ayude
No dude en hacerme preguntas sobre sus necesidades :)
Buena suerte :)