【发布时间】:2015-10-01 20:58:45
【问题描述】:
我有一个简单的应用程序,用户可以在其中添加帖子并安排它在特定时间上线。
现在我有两种方法:
第一种方法: 我可以设置一个每分钟调用一次的脚本,它会检查当前是否有任何帖子处于待处理状态,如果它们是这样的,则会发布它们:
我的 Cron 工作:
1 * * * * php myScriptToMakePostLive.php
或
第二种方法 当用户提交他的帖子以稍后发布时,我可以在服务器上动态设置 cron 作业。我正在使用这个脚本:
public function schedulePost(){
$post = new Post();
$post->body = $_POST['body'];
$post->save();
$scheduledTime = Carbon::parse($_POST['publish_on']);
//saving cron dynamically
$output = shell_exec('crontab -l');
file_put_contents('/tmp/crontab.txt', $output.PHP_EOL."{$scheduledTime->minute} {$scheduledTime->hour} {$scheduledTime->day} {$scheduledTime->month} * php myScriptToMakePostLive {$post->id}".PHP_EOL);
echo exec('crontab /tmp/crontab.txt');
die('Your post has been Scheduled !!');
}
我想知道哪种方法更好,为什么?
【问题讨论】:
-
这需要在共享主机上工作,还是可以安装新软件,如作业队列?
-
1 * * * * 是每小时 1 分钟,每分钟是 * * * * *
标签: php cron crontab cron-task