Nosso servidor de produção está com problemas no cron. Cron é definido para executar a cada 5 minutos, o que funciona na maioria das vezes, no entanto estou encontrando um problema em que um trabalho pode levar 6 minutos para processar. Um segundo trabalho de 6 minutos não será acionado até 10 minutos e, mais cedo ou mais tarde, isso será um problema.
Eu investiguei escrevendo um Daemon de bifurcação em C para escutar as solicitações recebidas - mas isso também é problemático porque significaria escrever outro endpoint da API e mastigar no tempo de desenvolvimento.
Encontrei o que parece ser uma solução simples e estou procurando críticas / críticas:
por questões de simplicidade, uma CLI do php produzirá um 1 ou um 0, dependendo da existência de uma tarefa em espera:
<?php echo "1" ?>
Um script bash é capaz de verificar se há alguma tarefa na fila:
#!/bin/bash
var=$(php -f ../readPhpOutput/testOutput.php)
if [ "$var" -eq "0" ]
then
echo "input zero"
else
echo "input not zero"
fi
sleep 10
Outro script bash está sendo executado com nohup para garantir que o script acima esteja em execução:
#!/bin/bash
while true
do
value=$(ps -A | grep [r]eadPhpOutput)
echo "grep output is: $value"
if [ -z "$value" ]
then /bin/bash ../readPhpOutput/./readPhpOutput.sh &
fi
sleep 5
done
Por favor, note o acima são exemplos simples e ingênuos para ilustrar o que eu estou tentando alcançar.
Minhas principais razões para não querer escrever um daemon são inexperiência com C, medo de bifurcar o meu servidor de produção e uma relutância em instalar um compilador no mesmo servidor.