Ejecutar script en php y que quede activo luego de cerrar la consola

  • Autor Autor mauropek
  • Fecha de inicio Fecha de inicio
M

mauropek

Curioso
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas, consulta. Necesito ejecutar un script en php desde el cmd (estoy usando XAMPP en Windows) y quiero ejecutar ejectutar php example.php y que este continue corriendo aún cuando cierro la consola. Entiendo que debo usar algún tipo de daemon como suelo usar para nodejs, pero no logro dar con la manera de hacerlo en php. Alguien puede darme una mano?

Gracias.
 
creo que te refieres a un "cron". con laravel podrías hacerlo de manera fácil usando commands. Solo escribes tu lógica y lo demás Laravel ya lo tiene implementado.
 
creo que te refieres a un "cron". con laravel podrías hacerlo de manera fácil usando commands. Solo escribes tu lógica y lo demás Laravel ya lo tiene implementado.
No, no es un cron. Es un proceso en segundo plano. Debe quedar siempre activo. Como cuando se ejecuta con nohup en linux.
 
No, no es un cron. Es un proceso en segundo plano. Debe quedar siempre activo. Como cuando se ejecuta con nohup en linux.
Ok busca en github. hace un par de años use uno. Pero no me acuerdo el nombre... era algo como php-daemon o parecido.

El problema era que consumia recursos al ejecutarse todo el rato, seguro que necesitas algo asi? no necesitas un trigger, store procedure, job, command?
 
Ok busca en github. hace un par de años use uno. Pero no me acuerdo el nombre... era algo como php-daemon o parecido.

El problema era que consumia recursos al ejecutarse todo el rato, seguro que necesitas algo asi? no necesitas un trigger, store procedure, job, command?
Sí, es lo que necesito. De hecho en node lo hago con "demonize".
 
¿No es mejor un cronjob que se ejecute cada segundo?
 
Podes armarte un script para que instale tu script como servicio usando las funciones que provee php: https://www.php.net/manual/es/ref.win32service.php, ahi llamas a la funcion

win32_create_service​

y te crea un servicio que queda corriendo en segundo plano, por supuesto que el script que registres como servicio tiene que estar en un loop.
 
Dockerizalo
 
Como dice el compañero arriba con docker
 
También puedes usar el task scheduler de windows


Y si con php.exe no te sirve, incluso podrías llamar directamente al navegador, y luego cerrarlo llamando a un .bat con este código

Insertar CODE, HTML o PHP:
echo off
SET SLEEPDELAYMIN=1

SET /A SLEEPDELAY=60*SLEEPDELAYMIN
echo Will close Firefox after %SLEEPDELAYMIN% minutes
timeout /t %SLEEPDELAY% /nobreak

echo Killing Firefox...
taskkill /F /T /IM firefox.exe
 
¿Cómo mejoraría el problema tener el script dockerizado?
 
Atrás
Arriba