【发布时间】:2018-10-01 19:24:01
【问题描述】:
要求是设置一个每 4 秒运行一次的 cron 作业。由于 cron 作业只能在几分钟内执行,所以我决定每分钟触发一次我的作业,并在作业中运行几次。这是代码。
public function handle()
{
$dt = Carbon::now();
$counter = 60/4; //run the job every 4 seconds
do {
//logic goes here
// add data to database
time_sleep_until($dt->addSeconds(4)->timestamp);
} while ($counter-- > 0);
}
Cron 作业安排在 crontab -e 中
*/1 * * * * /usr/bin/php /var/www/html/dashboard/artisan cronjob:pulldata
当我使用 php artisan 命令手动执行作业时,作业每 4 秒运行一次。但是,当它被 crontab -e 的 cronjob 触发时,它每分钟只执行一次。
【问题讨论】:
-
您查看的是 crontab 日志还是 4 秒任务的实际结果?因为 crontab 只会每 60 秒显示一个新条目。
-
嗨,这是一个函数,你不显示是否/如何调用它。它还调用了一个你没有显示的函数。请记住,您必须在问题中添加一些上下文,否则对我们来说这仍然是一个谜
-
@MarkWalet,函数内部的逻辑是将条目添加到数据库中的表中。一分钟内必须有 15 个条目(每 4 秒),但只有 1 个条目,这意味着作业只执行了一次。如果我使用 artisan 命令手动运行它,表中有 15 个条目。
-
要改善您的 SO 体验,请阅读如何询问 On Topic question、Question Check list 和 the perfect question 以及如何创建 Minimal, Complete and Verifiable Example
-
@RiggsFolly,逻辑是向表中添加数据。将更新问题。并且从服务器调用 cron 作业 (crontab -e)。除此之外没有其他上下文
标签: php laravel laravel-5 cron