要求是设置一个每 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 触发时,它每分钟只执行一次。