原生PHP/TP5 在windows/Linux服务器平台创建计划任务
-
Windows服务器 + 原生PHP程序
- 创建PHP程序:在项目包内新建一个.php文件,在PHP文件内编写相应逻辑代码,将文件在本地测试运行能正常解决需求后上传保存到服务器;
- 创建执行程序:在服务器项目包内新建一个文本文件,修改文件名为后缀为.bat文件,若存在多个计划任务建议在项目包适当位置新建目录管理全部计划任务,用记事本打开.bat文件,写入:
服务器php执行程序php.exe绝对路径 -q .php脚本绝对路径,
如:
F:\wamp\bin\php\php5.6.25\php.exe -q F:\centralpec\cron\cron_bid_confirm.php,
保存;
3. 创建服务器计划任务:以win10操作系统为例
①打开控制面板,选择系统和安全,打开管理工具下的计划任务;
②在计划任务程序页面内,可以通过点击左侧菜单栏计划任务程序库查看当前存在的计划任务,点击任务计划程 序,在最右侧栏中选择创建任务;
③在创建任务页面常规标签内填写任务名称,安全选项修改为不管用户是否登录都要运行;
④选择操作标签,点击新建操作,在新建操作页面内选择操作程序为上一步创建好的.bat执行程序,点击确定;
⑤选择触发器标签,点击新建触发器,在新建触发器页面内设置任务执行开始时间和频率等数据,如下图设置 为从2020年4月21日开始,每天凌晨0点10分0秒开始执行程序,每天执行一次,设置完成后点击确定保存;
⑥点击常规、操作、触发器各选项确定各设置数据路径正确后,点击确定,可以先设置时间为即将到来的某个时 间进行验证测试,测试正常后编辑修改时间为正确时间,其他版本windows平台设置计划任务的方法基本相 同。
- Windows服务器 + TP5框架计划任务管理
1.创建TP5计划任务
①创建计划任务程序:在项目包的application下相应的模块内创建command目录,在command目录内新建计划任务文 件,如Cron.php;也可以打开命令行cd到项目跟目录下使用命令:php think make:controller command/Cron生成 command目录和Cron.php;打开Cron.php注意namespace路径,继承Command类;
②编辑计划任务程序:在Cron类中生成protected function configure() 和protected function execute();其中configure() 方法是设置计划任务的名称和注释等数据,TP5的计划任务日志中会使用该数据记录运行日志,其他设置参数可查 看TP5文档;execute()方法是写具体任务的执行程序,可在此方法内调用多个计划任务方法,如:
③编辑计划任务列表:打开application/command.php,在return数组里加上你的计划任务路径,如:
④打开CMD命令行工具,cd到项目根目录下,使用命令 php think 计划任务文件名,如:php think Cron执行计划任务 进行测试,测试正常后将代码提交到服务器;
2.创建执行程序:在服务器项目包内新建一个文本文件,修改文件名后缀为.bat的文件,若存在多个计划任务建议在项目 包适当位置新建目录管理全部计划任务,用记事本打开.bat文件,写入
cd 项目根目录
服务器php执行程序php.exe绝对路径 think 计划任务程序名
如:
cd F:\app\project
F:\wamp\bin\php\php5.6.25\php.exe think Cron
保存;
3.创建服务器计划任务:与原生PHP创建计划任务相同
- Linux服务器crontab + 原生PHP程序
1.创建PHP程序:与windows服务器创建原生PHP程序一样;
2.创建crontab计划任务:
①查看crontab状态:进入Linux服务器主目录,使用命令 service crond status查看当前服务器crontab状态,若无输出怎 可能是服务器未安装crontab,使用yum install crontabs安装crontab,正常状态如下:
②使用crontab -l查看当前服务器的crontab计划任务列表;
③设置crontab计划任务:使用命令 crontab -e进入crontab设置,i进入编辑模式,基本时间格式 :
分钟 小时 日 月 星期 命令
* * * * * *
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
如00 */1 * * * 表示每小时的0分执行一次,时间格式设置好之后跟要执行的命令,基本格式为 时间 PHP安装路径 -f PHP程序路径,若需要服务器记录日志可以在PHP程序路径后跟 >> 日志文件名,如:
00 */1 * * * /usr/bin/php -f /root/test.php >> test.log
表示每小时的0分使用/usr/bin下的PHP 执行 /root下的test.php程序并将结果记录到test.log中;
:wq保存文件设置并退出;
④重启crontab:先crontab -l 查看是否添加成功,使用命令 service crond restart重启crontab执行计划任务;
- Linux服务器crontab + TP5框架计划任务
1.创建TP5计划任务:与windows平台下一样,先在本地创建好TP5框架内的计划任务,使用命令 php think PHP计划任务 文件名 本地验证无误后将代码上传到服务器;
2.创建crontab计划任务:与Linux下crontab创建原生PHP计划任务相同,只是执行命令需要修改成对应TP5写法:
执行时间 php 项目根目录/think 计划任务程序文件名
如:
00 */1 * * * php /root/project/think Test
表示每小时的0分使用php执行一次/root/project下的think Test 命令,即TP5的计划任务命令。