今天碰到个问题,客户需要在5秒内实现操作。
    这个项目是yii2框架,利用其commands命令+crontab来定时操作的。
    原来的命令是这样的,一分钟执行一次:
    crontab -e

    1. */1 * * * * /opt/www/wwwroot/yii test/test

    现在要求5秒内定时任务,但crontab最小就只能到1分钟。
    最后在网上搜索,发现有实现秒级的定时任务。
    参考后修改如下(当然,必须保证/opt/www/wwwroot/yii test/test命令在任何地方都能执行,否则得用cd…)

    先在项目目录中创建名为crontab.sh的文件,别忘了给权限:chmod +x crontab.sh
    crontab.sh

    1. #!/bin/bash
    2. step=5 #间隔的秒数,不能大于60
    3. for (( i = 0; i < 60; i=(i+{$step}) )); do
    4. /opt/www/wwwroot/yii test/test
    5. sleep $step
    6. done
    7. exit 0

    crontab -e

    1. # m h dom mon dow command
    2. * * * * * /opt/www/wwwroot/crontab.sh

    见效果:
    image.png


    【参考来源】
    https://blog.csdn.net/aaroun/article/details/78892984
    https://www.jianshu.com/p/2f53c3a5fb69