linux中定时运行php(每分钟执行一次为例)
注:使用Crontab定时执行php脚本文件
1. 安装crontab
yum install crontabs
说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务(/bin/systemctl restart crond.service)
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
注:可以使用systemctl list-units命令查看crond服务有没有开启
2.crontab -e,进入编辑页面,i键进入编辑模式
参 数:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称> 指定要设定计时器的用户名称。
crontab 格式:
基本格式 :
分钟 小时 日 月 星期 命令
* * * * * *
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
本例中执行:* */1 * * * /usr/bin/php /www/wwwroot/snow/test.php 设置每分钟执行一次test.php文件 Esc->:wq退出保存 (*/1 * * * *也代表每一分钟执行)
注:/usr/bin/php //调用php
/www/wwwroot/snow/test.php //需要执行的php文件
3.可以执行命令:tail -f /var/log/cron可以查看corntab的执行情况(ctrl+c退出)
4.thinkphp 中的实践操作:
1)控制器:
namespace app\admin\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;
use think\Log;
class AutoTest extends Command
{
protected function configure()
{
$this->setName('autoTest')->setDescription("定时任务测试");
}
//调用这个类时,会自动运行execute方法
protected function execute(Input $input, Output $output)
{
$output->writeln('Date Crontab job start...');
/*** 这里写计划任务列表集 START ***/
/**需要执行的代码**/
/*** 这里写计划任务列表集 END ***/
$output->writeln('Date Crontab job end...');
}
}
2)command.php中加入:
return [
'app\admin\command\AutoTest',
];
3)定时任务:
*/1 * * * * sudo -u www /www/server/php/72/bin/php /www/wwwroot/project/think autoTest
参考链接:https://blog.csdn.net/jueyan520/article/details/86242257 (感谢分享)
https://www.cnblogs.com/jingmin/p/9687905.html(感谢分享)
https://blog.csdn.net/zixuan701/article/details/88536003 (感谢分享)