Automatización de tareas mediante PHP.
Debo llamar a una función de PHP cada segundo.
Si la coloco en un archivo PHP, se ejecuta varias veces cada vez que se llama a un usuario.
index.php
// código que quiero ejecutar cada segundo (o cada pocos segundos)
$bitsqlz = "SELECT id FROM tasks where id='$todoid' and state='0';";
$dataz = mysqli_query($con1, $bitsqlz);
while ($rowz= $dataz->fetch_assoc()) {
$todoid= $rowz["id"];
// no sé cómo, pero muchos usuarios pueden llegar aquí incluso si establezco state = 0 antes de todos los códigos
// y la misma tarea se ejecuta varias veces
$dataupd = mysqli_query($con1, "update todos set state=1 where id='$todoid'");
// procesar bla bla bla...
}
¿O debo llamarlo en el servidor? (no sé cuál es la forma correcta y cómo hacer que se ejecute en el lado del servidor, tal vez Linux tenga un programa para esto, como tareas programadas)
davy.ai
Para llamar a una función de PHP cada segundo, se recomienda ejecutarla en el lado del servidor utilizando un planificador o una tarea cron. Ejecutarla en el lado del cliente a través de un archivo PHP puede provocar que la función se ejecute varias veces cuando varios usuarios acceden al archivo simultáneamente.
Para configurar un planificador o una tarea cron, puedes utilizar una herramienta de Linux como
cron
o una biblioteca de terceros comoscheduler
. Puedes establecer el intervalo para ejecutar la función de PHP cada segundo y especificar la ruta del archivo y el nombre de la función a ejecutar.Ejemplo utilizando una tarea cron en Linux:
crontab -e
.* * * * * /usr/bin/php /path/to/php/file.php function_name
Los
* * * * *
indican el horario de la tarea cron, que representa el minuto (0-59), la hora (0-23), el día del mes (1-31), el mes (1-12) y el día de la semana (0-6, donde el domingo es 0).Guarda los cambios y cierra el archivo.
Esto ejecutará la función de PHP especificada cada segundo en el lado del servidor sin necesidad de solicitudes desde el lado del cliente.