博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP定时执行任务的3种方法详解
阅读量:5129 次
发布时间:2019-06-13

本文共 1202 字,大约阅读时间需要 4 分钟。

转载

更新时间:2015年12月21日 10:38:56   作者:PHP淮北  

PHP不支持多线程,有时候处理问题不是那么方便,今天谈论一下PHP定时执行的方法,感兴趣的小伙伴们可以参考一下

PHP定时执行的三种方式实现

  • 1、windows 的计划任务
  • 2、linux的脚本程序
  • 3、让web浏览器定时刷新

具体实现

1、windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本。

2、linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :

复制代码 代码如下:

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

说明 :

crontab是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

3、PHP实现定时执行计划任务

使用php让浏览器刷新需要解决几个问题
PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:

'; sleep($interval);// 等待5s }while(true);//方法2---sleep 定时执行require_once './curlClass.php';//引入文件$curl = new httpCurl();//实例化$stime = $curl->getmicrotime();for($i=0;$i<=10;$i++){echo '测试'.time().'
'; sleep($interval);// 等待5s}ob_flush();flush();$etime = $curl->getmicrotime();echo '

';echo round(($etime-stime),4);//程序执行时间

测试的时候发现这个效率并不是很高。

总结:

个人感觉PHP定时执行任务的效率不是很高,建议关于定时执行任务的工作还是交给shell来做吧。

以上就是PHP定时执行任务的3种方法,对于前一篇文章结尾中提到的crontab这个命令,也进行了简单介绍,希望大家能够有所收获。

转载于:https://www.cnblogs.com/zjl8455482/p/9338984.html

你可能感兴趣的文章
并发调度的可串行性
查看>>
Windows Subsystem for Linux(WSL)安装记录
查看>>
Cryptography I 学习笔记 --- 总结
查看>>
面试题之(vue生命周期)
查看>>
jquery将具有相同名称的元素的值提取出来放到一个数组内
查看>>
启用lumen的user token认证
查看>>
nginx上搭建HLS流媒体服务器
查看>>
利用光场进行深度图估计(Depth Estimation)算法之一——聚焦算法
查看>>
oracle查询正在执行的语句以及正被锁的对象
查看>>
【jzoj】2018/2/2 NOIP普及组——D组模拟赛
查看>>
[Angular] Implementing A General Communication Mechanism For Directive Interaction
查看>>
关于Datatable中Select()方法的使用(转)
查看>>
【JPA】映射
查看>>
Hello IT
查看>>
Puppeteer学习笔记 (1)- 什么是Puppeteer
查看>>
LeetCode 13: Roman to Integer
查看>>
虚拟机使用桥接模式连接网络并且设置静态ip
查看>>
linux命令学习之:route
查看>>
Struts2配置RESULT中TYPE的参数说明
查看>>
TextMode="Password" 不能赋值的解决方法
查看>>