您现在的位置是:群英 > 开发技术 > PHP语言
PHP如何实现执行定时任务,方法是什么?
Admin发表于 2022-01-20 19:46:371604 次浏览

    这篇文章我们来了解PHP如何实现执行定时任务,在PHP中是无法实现每天定时执行的,那么怎样才能实现呢?下文有很详细的介绍及代码示例可以参考,有需要的朋友可以了解看看,接下来就跟随小编来一起学习一下吧!

    本文操作环境:linux5.9.8系统、PHP7.1版、Dell G3电脑。

    php做不到每天定时执行,只有java或者c可以,因为php是不访问页面就不会动得代码,但是有一个方法可以曲线救国你写一个页面是你要每天定时执行的页面,然后视你的操作系统而言,做定时任务,定时去访问这个页面。本文以linux系统为例。

    PHP实现执行定时任务

    首先用命令检查服务是否在运行

systemctl status crond.service

    如果服务器上没有装有crontab ,则可以执行

yum install vixie-cron
yum install crontabs

    常用指令

systemctl restart crond.service #启动服务 systemctl reload crond.service 
#重新载入配置 systemctl status crond.service #查看crontab服务状态 systemctl enable crond.service #开机自启动

    启动服务之后可以输入指令(按i进行编辑)

crontab -u root -e #进入定时任务编辑

    查看crontab定时执行任务列表

crontab -l

    相关参数

基本格式 :  
*    *  *   *   *  command  
分  时  日  月  周   命令  
第1列表示分钟1~59 每分钟用*或者 */1表示 (每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推)
第2列表示小时1~23(0表示0点)  
第3列表示日期1~31  
第4列表示月份1~12  
第5列标识号星期0~6(0表示星期天)  
第6列要运行的命令

    查看动态日志

tail -f /var/log/cron

    例子

*/2 * * * * curl -o /home/index.html www.baidu.com #每隔两分钟使用curl 访问www.baidu.com 并将结果写入/home/index.html 文件
00 * * * * lynx -dump https://www.yourdomain.com/script.php   #当前时间的分钟数为00时,执行该定时任务
lynx -dump https://www.yourdomain.com/script.php  
#通过lynx访问这个url。我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择
00 */2 * * * /usr/bin/php /home/www/script.php  #直接用php去执行本地php文件

    这条语句就可以在每2小时的0分钟,通过linux内部php环境执行script.php,注意,这里可不是通过url访问,通过服务器环境来执行哦,而是直接执行,因为绕过了服务器环境,所以效率当然要高很多。

    至于为什么要用/usr/bin/php可以使用命令:which php 或者 whereis php 查看

    在crontab里面,将执行的结果输出一个文件当中。然后在这个文件当中查看执行情况。例如:

*/1 * * * * /usr/bin/php /data/dou/web/api/cron.php >> /data/dou/web/cron.txt

    连续执行命令:    

    按顺序依次执行(通过`;`分隔)

cmd1;
cmd2;
cmd3;

    按逻辑与执行(&&分隔)

cmd1&&cmd2&&cmd3;
cmd4;

    按逻辑或执行:(||分隔)

cmd1||cmd2||cmd3;
cmd4;

    即回传值为0时逻辑与继续执行下去,回传值不为0时逻辑或继续执行,跟平时程序的逻辑与跟逻辑或短路一样(`?`为回传值,命令执行正确时回传值为0 通过echo $?可以试验,具体搜"回传")
组合:    
cmd1;

cmd2||cmd3&&cmd4;

cmd5;    
先执行cmd1然后执行cmd2,如果cmd2回传值非0则执行cmd3,如果cmd3回传值为0则执行cmd4,然后继续按顺序执行

    时间设定规则示例:

1.每分钟定时执行一次规则:    
每1分钟执行: */1 * * * *或者* * * * *
每5分钟执行: */5 * * * *

    2.每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *

    3.每天定时执行一次规则:
每天执行 0 0 * * *

    4.每周定时执行一次规则:
每周执行 0 0 * * 0

    5.每月定时执行一次规则:
每月执行 0 0 1 * *

    6.每年定时执行一次规则:
每年执行 0 0 1 1 *

    7.其他例子    
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]

    以上就是PHP实现执行定时任务的方法介绍,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习PHP语言有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-04-28 17:44:21 
摘要:在html中,可以通过将body元素的style属性的值设置为“overflow:hidden”来禁止页面滚动,具体语法“<body style="overflow:hidden">..</body>”。
2022-07-07 17:26:19 
摘要:这篇文章主要介绍了Golang通脉方法,Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于,其他语言中的this或者 self,具体内容请和小编一起来学习下面文章内容吧
2022-05-07 17:42:47 
摘要:bootstrap内置插件有:1、过渡效果插件;2、模态框插件;3、下拉菜单插件;4、滚动监听插件;5、标签页插件;6、提示工具插件;7、弹出框插件;8、警告框插件;9、按钮插件;10、折叠插件;11、轮播插件;12、附加导航插件。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部