Я немного освоил PHP-кодирование и знаком с его аспектами.
Я создал PHP-скрипт, который запускается как задание cron, которое извлекает данные из базы данных и при определенных условияхвстречаются, некоторая информация записывается в файл.
Поскольку в базе данных может быть более одного результата, выполняется цикл для выполнения каждого результата в базе данных.
Внутри этогоцикл, у меня есть другой цикл, который будет записывать данные в файл.Затем задание cron используется для вызова этого файла каждую минуту и запуска содержимого в скрипте bash.
Итак, PHP зацикливает его настройку, чтобы увидеть, есть ли в файле что-либо записанное в него с помощью filesize ()функция.Если размер файла не равен нулю, то он будет спать 10 секунд и попытаться прочитать его снова.Вот код:
while(filesize('/home/cron-script.sh') != 0)
{
sleep(10);
}
К сожалению, когда размер файла запускается, он, похоже, блокирует файл или что-то в этом роде.Задание cron может без проблем выполнить сценарий bash, и самая последняя команда в сценарии - обнулить файл:
cat /dev/null > /home/cron-script.sh
Но, похоже, что после запуска вышеуказанного цикла он блокируетсяв исходном размере файла.В качестве примера я просто вставил слово «exit» в файл cron-script.sh и затем запустил тестовый скрипт:
while(filesize("/home/cron-script.sh") != 0)
{
echo "filesize: " . filesize("/home/cron-script.sh");
sleep(10);
}
Цикл бесконечен и будет продолжать отображать «размер файла»: 4 ", когда я вставил слово" выход ".Затем я выполню команду в терминале:
cat /dev/null > /home/cron-script.sh
, которая затем очистит файл, пока у меня запущен тестовый скрипт выше.Но он продолжает утверждать, что размер файла равен 4 и никогда не возвращается к 0 - поэтому запуск PHP-скрипта выполняется до тех пор, пока не будет достигнут срок выполнения.
Может кто-нибудь дать мне несколько советов о том, как я могу решить эту проблему?По сути, мне просто нужен какой-то способ чтения размера файла - и если в файле есть какие-либо данные, он должен будет циклически выполнять процедуру сна, пока файл не будет очищен.Файл должен очиститься в течение одной минуты (поскольку задание cron вызывает этот файл cron-script.sh каждую минуту).
Спасибо!