php - cron 是在 php 中编写基于提醒的应用程序的最佳方式吗?

标签 php laravel cron

假设我有这样一个数据库。

| task                      |  time                     | 
|---------------------------|---------------------------| 
| Remind me to water plants |  2018-02-18T19:32:10.486Z | 
| English Test              |  2018-10-8T09:30:00.000Z  | 
| Math Test                 |  2018-10-8T10:30:00.000Z  | 

而且我想在用户请求时(或者可能是一个小时前)向用户发送提醒通知,并在触发提醒通知的特定时间执行一些其他代码块。

我正在考虑编写一个类似这样的 cron 作业

* * * * * php/laravel-project/artisan schedule:run >>/dev/null 2>&1

如 laravel 文档中所述 ( https://laravel.com/docs/5.6/scheduling )。

在该脚本中,我将在下一个小时内循环到当前时间提醒和提醒并执行操作。

这是一个好的做法吗?不会增加PHP和数据库之间的流量吗?如果我在同一小时内有很多提醒,循环进入并为每个提醒执行代码块会是个好主意吗?

请提出想法

最佳答案

使用 task scheduler是解决这个问题的正确方法。如果您有大量提醒要处理,则将它们设置为以 queued jobs 执行。是推荐的方法。这样服务器上的负载就会最小化,并且不会因用户流量而成为系统瓶颈。

您可能想要创建一个 console command处理处理逻辑并创建作业。 Chunking这些作业也会有所帮助,因为这会错开给定批处理中处理的作业数量。

关于php - cron 是在 php 中编写基于提醒的应用程序的最佳方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855952/

相关文章:

php - 在 MySQL 中使用 OR 和 AND

php - Ubuntu 的 DNS 缓存存储在哪里?

php - 多次回显一个 PHP 变量

php - 搜索用户 Laravel

php - 按 ID 分组对话并加入最新消息

python - cronjobs 的性能比 sleep 函数更好吗?

java - cron 触发器的计时器可以重置吗?

Mysql 使用 Cron 作业导出和发送邮件

php - 如何检查电子邮件地址是否存在。验证

php - Laravel 卡住了最后一个在论坛发帖的用户