基于 Yii 2.0 高级模版的控制台命令实现定时任务的流程

本文详细介绍如何在Yii2框架中扩展控制台命令,包括创建自定义控制器、配置命令及使用CronTab定时执行等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

、复制\vendor\yiisoft\yii2\console\controllers\CacheController.php至\console\controllers\LuaGameTeamSkillController.php,如图1

复制\vendor\yiisoft\yii2\console\controllers\CacheController.php至\console\controllers\LuaGameTeamSkillController.php

图1

2、将\console\controllers\LuaGameTeamSkillController.php重命名为\console\controllers\LuaGameTeamSkillController.php,如图2

将\console\controllers\LuaGameTeamSkillController.php重命名为\console\controllers\LuaGameTeamSkillController.php

图2

3、命名空间修改为namespace console\controllers;,类名修改为LuaGameTeamSkillController,如图3

命名空间修改为namespace console\controllers;,类名修改为LuaGameTeamSkillController

图3

4、仅保留actionIndex(),其他方法删除,如图4

仅保留actionIndex(),其他方法删除

图4

5、在Windows PowerShell中,进入程序根目录,运行 ./yii,,会给你一些可用的命令列表,其中增加了可用命令 lua-game-team-skill,如图5

在Windows PowerShell中,进入程序根目录,运行 ./yii,,会给你一些可用的命令列表,其中增加了可用命令 lua-game-team-skill

图5

6、使用退出代码是控制台应用程序开发的最佳做法。通常,执行成功的命令会返回 0(Controller::EXIT_CODE_NORMAL),执行失败返回1(Controller::EXIT_CODE_ERROR),如图6
const EXIT_CODE_NORMAL = 0;
const EXIT_CODE_ERROR = 1;

使用退出代码是控制台应用程序开发的最佳做法。通常,执行成功的命令会返回 0(Controller::EXIT_CODE_NORMAL),执行失败返回1(Controller::EXIT_CODE_ERROR)

图6

7、运行 ./yii lua-game-team-skill,成功运行,如果在执行过程中提供的路由不包含路由的方法ID,将执行默认操作,即actionIndex()方法,如图7

运行 ./yii lua-game-team-skill,成功运行,如果在执行过程中提供的路由不包含路由的方法ID,将执行默认操作,即actionIndex()方法

图7

8、程序上传至CentOS 7上,在根目录下运行yii,报错-bash: yii: command not found,如图8

程序上传至CentOS 7上,在根目录下运行yii,报错-bash: yii: command not found

图8

9、在根目录下运行 php yii,报错 PHP Warning ‘yii\base\ErrorException’ with message ‘exec() has been disabled for security reasons’,如图9

在根目录下运行 php yii,报错 PHP Warning 'yii\base\ErrorException' with message 'exec() has been disabled for security reasons'

图9

10、编辑php.ini文件,查找disable_functions,删除exec,保存,如图10

编辑php.ini文件,查找disable_functions,删除exec,保存

图10

11,重启php-fpm,再次运行php yii,成功显示可用命令列表,lua-game-team-skill命令已经存在,如图11

重启php-fpm,再次运行php yii,成功显示可用命令列表,lua-game-team-skill命令已经存在

图11

12、运行 php yii lua-game-team-skill,如图12

运行 php yii lua-game-team-skill

图12

13、运行命令成功后,在Redis中生成相应数据,如图13

运行命令成功后,在Redis中生成相应数据

图13

14、使用CronTab定时执行php,执行命令,crontab -e,之后就会打开一个文件,如图14

使用CronTab定时执行php,执行命令,crontab -e,之后就会打开一个文件

图14

15、在文件中添加如下内容,表示每分钟执行一次,保存,如图15
*/1 * * * * /usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill

在文件中添加如下内容,表示每分钟执行一次,保存

图15

16、使用linux flock 文件锁实现任务锁定,重新编辑,保存,如图16
*/1 * * * * flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’

使用linux flock 文件锁实现任务锁定,重新编辑,保存

图16

17、查看/tmp/目录,sleep.lock文件存在,如图17

查看/tmp/目录,sleep.lock文件存在

图17

18、使用linux flock 文件锁实现任务锁定,重新编辑,表示每10秒钟执行一次,保存,如图18
* * * * * flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’
* * * * * sleep 10; flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’
* * * * * sleep 20; flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’
* * * * * sleep 30; flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’
* * * * * sleep 40; flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’
* * * * * sleep 50; flock -xn /tmp/sleep.lock -c ‘/usr/local/php/bin/php /data/wwwroot/api.kaiqiu.shuijingwanwq.com/yii lua-game-team-skill’

使用linux flock 文件锁实现任务锁定,重新编辑,表示每10秒钟执行一次,保存

图18

转载于:https://www.cnblogs.com/iceman-/p/8898167.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值