Размещено: 2023-12-15 20:45:58
Теги: php
CRON ЧАЩЕ ЧЕМ РАЗ В МИНУТУ
Если нужно сделать, что бы php скрипт выполнялся через каждые несколько секунд, то есть простой способ как это осуществить. Вся программа помещается в функцию work(), неизменяемые данные, помещаются в константы. При этом должна быть четко прописаны return false; что бы не возникало непредвиденных ошибок, и происходил переход к следующей итерации, которые привели бы к остановке выполнения программы. Так же естественно не должно быть exit; все exit; необходимо переписать на return false; Затем это вешается на крон и ставится выполнение раз в минуту.
function work() { if(($a=rand(0,1))!=1) { echo 'false:'.$a.'<br>'; return false; echo 'не выполнять!'; } else { echo $a.'<br>'; } } //время запуска $start_time=time(); //запускаем через sleep вплоть до 57 секунды, в итоге время скрипта примерно минута while(time()-$start_time<57) { work(); sleep(3); clearstatcache(); //иначе часть функций кэшируются. это как минимум. а возможно еще какие-то баги появляются при таком решении }
А так вообще надо сказать, что этот метод - плохой. Сама архитектура метода неверная. PHP плохо подходит для такого использования, не говоря уже про бесконечные циклы и прочую ерунду, с которой вообще только геморой можно заработать и ничего больше. Много что может работать не так как при одной итерации и однократном выполнении кода. И проверить это заранее и понять практически нереально. Появляются всякие непредсказуемые неожиданности: допустим при работе с txt файлом, если каждую итерацию запрашивать время последнего изменения файла filectime. То результат всегда будет одинаковым, даже если в файле что-то изменить в это время. Потому, что все функции кэшируют результат. Чтобы сбросить кэш используйте функцию clearstatcache().
Место такого способа лучше использовать что-то, что будет вызывать однократное выполнение файла, через определенное время. Сторонние программы. Либо как-то через localhost вызывать выполнение скрипта через каждые n-sec и тогда он абсолютно предсказуемо будет себя вести.
На эту страницу чаще всего попадают по запросам: крон чаще чем раз в минуту, очистить кэш, сбросить время последнего изменения файла