вы сказали, что вы не хотите использовать хроны работу, потому что вы хотите, только сообщение, отправленное один раз, но это неверно понимает способ t для задания такого типа будет написано задание cron.
Рассмотрите ситуацию, когда у вас много пользователей, создающих много сообщений для отправки в различные заданные моменты времени.
Вы не хотите, чтобы на каждом из этих сообщений на вашем сервере работала PHP-программа; это было бы расточительно для ресурсов сервера, даже если бы они были всего лишь sleep()
ing на время.
Вместо этого можно использовать задание cron для запуска недолгосрочной программы PHP раз в минуту (или любой другой интервал подходит вам).
Ваша программа создания сообщений не будет записана для отправки сообщения; вместо этого он будет вставлять его в базу данных вместе со временем, которое нужно отправить.
Между тем, программа cronjob PHP каждую минуту будет проверять эту базу данных, чтобы узнать, есть ли какие-либо сообщения, которые должны отправляться, но еще не отправлены. Затем он отправит эти сообщения и пометит их как «отправленные» в БД.
Это стандартный способ написать такое, поэтому неудивительно, что люди рекомендуют его вам.
Выполнение этого способа означает, что у вас никогда не будет программы, работающей на вашей системе, дольше, чем необходимо. Обе программы PHP быстро выполняют свою работу и выходят, а это означает, что их никто не ждет.
Это также делает его более надежным. Представьте, должен ли ваш сервер быть перезагружен.Если бы у вас была куча PHP-программ, работающих в течение нескольких часов, ожидая их момента, чтобы отправить свое сообщение, все они были бы потеряны. С другой стороны, если они сохранили свое сообщение в БД, задание cron найдет их и отправит их правильно после перезапуска сервера.
вы уверенны, что он блокирует полный PHP? так как каждый исполнитель php cli должен привести к собственному потоку? – Dukeatcoding
Почему вы кладете сон в «exec»? –
КПП. какое сообщение мы говорим о – Dukeatcoding