Laravel 定时计划任务按秒执行

yufei       5 年, 4 月 前       2087

Laravel 框架的应用程序的任务调度一般都会像下面这样写入 crontab 里

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

这是没任何问题的。但这样的默认最小执行时间是 1 分钟,可能就不是我们想要的。

如果要按照秒级来执行,要怎么做呢?

两个方案

  1. 使用 Shell 辅助

    比如每 3 秒执行一次 run_second.sh

    duration=3 #间隔的秒数
    
    for (( i = 0; i < 60; i=(i+duration) )); do
        /usr/local/bin/php /path-to-your-project/artisan schedule:run
        sleep $duration
    done
    

    然后将该脚本写入 crontab

    * * * * * cd /path-to-your-shell-script/run_second.sh >> /dev/null 2>&1
    
  2. 把循环写入到任务调度里面

    只需在自定义的 SomeCmd.php 文件的 handle 方法加上循环即可。

    假设每 3 秒执行

    for ($i=1;$i<=20;$i++){
         // 你要执行的任务
         sleep(3);
    }
    

    为了不影响其它任务的执行,这条你需要单独拎出来写入 crontab

    * * * * * /usr/local/bin/php /path-to-your-project/artisan SomeCmd
    
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.