Наш производственный сервер сталкивается с проблемой cron. Cron настроен на выполнение каждые 5 минут, что работает большую часть времени, однако я сталкиваюсь с проблемой, из-за которой работа может занять 6 минут. Вторая 6-минутная работа не будет выполнена, пока не пройдет 10 минут, и рано или поздно это станет проблемой.
Я исследовал написание разветвления Daemon на C для прослушивания входящих запросов, но это тоже проблематично, потому что это означало бы написание другой конечной точки API и процесс разработки.
Я нашел то, что кажется простым решением, и ищу критику / критику:
для простоты, php CLI будет выводить 1 или 0 в зависимости от того, ожидает ли работа:
<?php echo "1" ?>
Сценарий bash может проверить, есть ли какие-либо задания в очереди:
#!/bin/bash
var=$(php -f ../readPhpOutput/testOutput.php)
if [ "$var" -eq "0" ]
then
echo "input zero"
else
echo "input not zero"
fi
sleep 10
Другой скрипт bash работает с nohup, чтобы обеспечить выполнение вышеуказанного скрипта:
#!/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
Пожалуйста, обратите внимание, что приведенные выше простые наивные примеры иллюстрируют то, чего я пытаюсь достичь.
Моими основными причинами того, что я не хочу писать демон, является неопытность в C, боязнь бомбардировки моего рабочего сервера и нежелание устанавливать компилятор на том же сервере.