PHP - CRON,安排一个 php 脚本在每个动态计划上运行推送通知



我有一个上午 9 点、上午 9:15、10 点的约会列表,约会是动态安排的。 我必须在预定的时间内发送推送通知。

  • 由于计划时间是动态的或可由HR编辑的。
  • 我每分钟运行一次 cron,如果我发现计划的时间低于 ,cron 就像每分钟运行一次一样。

请提出执行计划,因为我不认为这是最佳解决方案。

您遵循的方法是正确的。由于约会是动态安排的,因此可以随时安排。每分钟运行一次 cron,并在脚本中检查是否有任何约会的安排时间已到达,并且通知已发送到 false。触发这些约会的通知,并将发送的通知设置为 true。

直接从

PHP编辑crontab

我在资源有限的系统上使用的一个技巧是编辑 crontab 本身,而不是每 60 秒不断调用一个 PHP 脚本。将 crontab 转换为 PHP 数组可以轻松完成调度任务的工作。

可以使用array_push完成添加任务

<?PHP
$newcron='00 09 * * * /usr/bin/PHP /fullPath/myPhpScript.php';    // New time and task         
$crons= explode( PHP_EOL ,shell_exec('crontab -l')); 
array_push($crons,$newcron);
file_put_contents('/tmp/crontab.txt', implode (PHP_EOL,$crons));
echo exec('crontab /tmp/crontab.txt');
?>

可以使用未设置完成删除任务

<?PHP
$crons= explode( PHP_EOL ,shell_exec('crontab -l')); 
unset($crons[1]);                                       //Task entry to remove
file_put_contents('/tmp/crontab.txt', implode (PHP_EOL,$crons));
echo exec('crontab /tmp/crontab.txt');
?>

Crontab 格式为:

* * * * *    /usr/bin/php /fullPath/myPhpScript.php
| | | | |    | 
| | | | |    +-- Command to call your script             
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59) 

如果您的约会是在上午 9:00、9:15 和 10:00,您可以从类似于下面的 crontab 开始。

00 09 * * * /usr/bin/PHP /fullPath/0900PushNotifyList.php
15 09 * * * /usr/bin/PHP /fullPath/0915PushNotifyList.php
00 10 * * * /usr/bin/PHP /fullPath/1000PushNotifyList.php

有关 crontab 命令和格式的更多信息,请访问 https://stackoverflow.com/tags/crontab/info

最新更新