当前位置: 首页 > 面试题库 >

如何每分钟超过一次频繁运行Cronjobs?

咸皓
2023-03-14
问题内容

我创建了一个电子邮件队列数据库表。我将把我的PHP应用程序需要发送的所有电子邮件插入此表。

然后,另一个PHP脚本将查找所有未发送的电子邮件并将其发送。

我使用cronjobs运行此脚本。不幸的是,cronjobs每分钟最多只能运行一次。因此,在最坏的情况下,用户必须等待一分钟,直到真正发送他的电子邮件为止。

我目前的解决方法是,使用附加的sleep参数调用脚本并复制cronjobs。

例:

* * * * * curl emails.php?sleep=0 >/dev/null 2>&1
* * * * * curl emails.php?sleep=10 >/dev/null 2>&1
* * * * * curl emails.php?sleep=20 >/dev/null 2>&1
* * * * * curl emails.php?sleep=30 >/dev/null 2>&1
* * * * * curl emails.php?sleep=40 >/dev/null 2>&1
* * * * * curl emails.php?sleep=50 >/dev/null 2>&1

在上面的示例中,脚本每10秒运行一次。emails.php脚本的第一行是:

sleep($_REQUEST['sleep']);

问题答案:

对于初学者,我建议使用命令行版本的PHP,而不要使用curl来调用脚本。然后,您可以创建一个具有合理使用寿命的PHP脚本,该脚本不受必须在给定时间段内输出响应的限制。

这样,您就可以在PHP脚本中简单地hibernate/检查电子邮件/传输/hibernate等,而不用不必要地使用cron。

此外,我会确保通过使用pid文件或数据库设置方法来确保不在数据库表上同时运行多个PHP脚本(如果存在/设置了给定的文件/设置,则终止处理)
),或者通过在开始周期的“检查电子邮件”部分之前检查脚本运行了多长时间,合理地安排cron作业的时间并限制脚本的最大处理时间。



 类似资料:
  • 如何每5分钟左右运行一个PHP文件?我尝试使用cron,但它似乎不起作用。假设我想让我的网站运行一个播放声音的php文件。如何使php文件每5分钟运行一次,使声音每5分钟播放一次。我知道JavaScript可以做到这一点,因此函数可以按设定的间隔运行,但我希望文件也这样做。 这样做的原因是我正在创建一个网站,我希望用户得到实时通知。为了做到这一点,我需要运行php文件,以便它可以检测用户通知的更改

  • 问题内容: 我正在cronjob中运行PHP脚本,我想每5分钟发送一封电子邮件 我当前的(crontab)cronjob: cronmail.php如下: 但是我没有在30分钟内收到此配置的电子邮件。 问题答案: 在文件中,这些字段是: 每小时的分钟。 一天中的小时。 一个月中的某天。 一年中的月份。 一周中的天。 所以: 表示每小时10分钟执行一次。 如果您希望每五分钟使用一次,请使用以下任一方

  • 问题内容: 我正在使用Python和PyGTK。我对运行某个功能感兴趣,该功能每隔几分钟从串行端口获取数据并保存一次。 当前,我正在时间库中使用sleep()函数。为了能够进行处理,我将系统设置如下: 这种设置使我从串口读取数据的间隔为5分钟。我的问题是我希望能够让我的readserial()函数每隔5分钟暂停一次,并且能够一直执行操作,而不是使用time.sleep()函数。 关于如何解决这个问

  • 问题内容: 我希望添加一个条目,以每隔30分钟,每小时的零零几点和接近小时的30分钟执行一次脚本。我有以下内容,但它似乎无法在0上运行。 我需要使用什么字符串? cron在OSX上运行。 问题答案: 做:

  • 我试图在后台设置每5分钟运行一次服务。但它表现得很奇怪: 在Main activity的onCreate中,我将它安排为每5分钟运行一次: 我严格遵循了本教程: https://guides.codepath.com/android/starting-background-services#using-with-alarmManager-for-periodial-tasks

  • 问题内容: 我想尝试通过以下方式使用@Schedule批注: 根据日志,CronService运行良好,但是计划的任务“ runsEveryMinute”不起作用。 使用EJB计划任务如何工作? 问题答案: 按照该Javadoc中的注释,默认值是: 除小时,分钟和秒外的所有字段;和 默认情况下为小时,分钟和秒。 通过将小时值保留为默认值,它要求计时器在午夜之后每分钟运行一小时(即00:00、00: