前段时间用Yii2做股票项目,股票项目对实时数据要求比较高,需要用到定时任务,每一秒都会请求新郎股票数据,但crontab定时任务最小单位是分,那如果需要实现秒级定时任务,需要写60次crontab,对于有强迫症的我是不能忍受的,我们可以用脚本实现秒级定时任务。
1.Yii2中定时任务控制器是写在console模块里
2.新建定时脚本crontab.sh
#!/bin/bash step=1 for ((i = 0;i<60;i=(i+step)));do $(/www/server/php/56/bin/php '/www/wwwroot/a617/yii' 'init/gather') sleep $step done exit 0
$(/www/server/php/56/bin/php '/www/wwwroot/a617/yii' 'init/gather')解释:
/www/server/php/56/bin/php:PHP路径
/www/wwwroot/a617/yii:项目目录/yii
init/gather:console模块下的路由,控制器/方法
3.crontab定时任务
crontab -e
* * * * * cd /www/wwwroot/a617/ && sh /www/wwwroot/a617/crontab.sh >> /www/wwwroot/a617/111.log 2>&1