У меня есть скрипт, который должен выполняться после каждых n минут. n минут является динамическим, поэтому я не могу установить задание cron для вызова сценария (в определенное время).
Итак, что я сделал, так это то, что я сохранял время после каждых n минут в массиве, чтобы при выполнении скрипта он сначала проверял, находится ли текущее время в массиве. если он найден в массиве, он продолжает выполняться, иначе он завершается.
чтобы выполнить скрипт, я должен использовать задание cron для запуска каждую минуту, чтобы проверить время в массиве. к сожалению, мой веб-хостинг позволяет только 5 минут как минимальный интервал. поэтому каждый раз, когда вызывается скрипт, я проверяю, находятся ли значения в массиве между $current_time
и $current_time + (4*60) // 4 minutes
. если это так, и если нужно, я использую time_sleep_until
для задержки сценария, пока время не достигнет значения, найденного в массиве.
поэтому, если мой скрипт выполняется в 10:05 и значение в массиве равно 10:06, я оставляю сценарий в спящем режиме до 10:06, прежде чем он продолжит выполняться. однако, если время сна больше минуты или около того, я получаю Mysql server gone away
.
как я могу предотвратить это? или есть лучший способ сделать это?
спасибо!