立即注册找回密码
 

奇瑰网

社区官方在线联系

工作时间: 周一到周五早上09:00-11:00, 下午03:00-05:00, 晚上08:30-10:30(周六、日休息)
点击这里给我发消息 点击这里给我发消息
QQ: 1721016987  TEL: qiguiqiqiku@foxmail.com  E-Mail: qiguiqiqiku@foxmail.com
用户交流QQ群
①群87904533 ③群943814120 ④群123475361 ←提醒:请勿重复加群, 谢谢合作

php后台运行以及定时任务的4种实现原理以及代

[复制链接]

46

主题

69

帖子

787

积分

高级会员

Rank: 4

G币
23
信用
-2
体力
292
发表于 2019-2-16 11:14:38 来自手机 | 显示全部楼层 |阅读模式
php后台运行以及定时任务的4种实现原理以及代码
后台任务在我们php编程中虽然用的不是很多甚至很多php程序员都没听过甚至觉得后台运行是不可能实现的,本人因为项目需求多次演变在这里分享给大家,本人第一次想实现后台运行是利用 方法二 在其执行完成后输出一段Js代码让页面再次执行,然后在服务器中打开该页面!以下实现方式除了方法一我不推荐使用外其他我在项目中都使用过!

方法一、php自带函数实现后台运行(不推荐使用,不太稳定而且弊端很多)
set_time_limit  允许运行的最长时间,0表示不限制
sleep 运行后延时多久在运行后面的代码

当我什么使用set_time_limit函数后将代码写在一个无限循环里面即可!
[mw_shl_code=php,true]set_time_limit(0);

while (true) {

        //php代码

        sleep(10);  //运行一次延时10秒后在执行下一次

}[/mw_shl_code]

方法二、写成网页浏览的形式打开即执行然后用http监控
HTTP监控本来是用来监控网站状态的,一次项目的时候无意将其做为了后台运行的方法;
HTTP监控会定期通过http协议(Get/Post)访问你要监控的页面,而每一次访问都会运行我们要执行的代码,如果运行时间比较长可以加入方法一的set_time_limit;

推荐2个Http监控网站:
1-阿里云监控(免费监控11个网站,多了收费,免费带短信提醒,个人推荐)
2-360云监控(http://jk.cloud.360.cn/Index/products) 不是很喜欢用360的产品

方法三、惰性运行
惰性也就是说每次网站运行都会运行那些被定义为后台任务的代码,Discuz开源系统就是用的这种方法,流量越大越任务越精准,我个人用此方法实现一般都是开发成一个全局插件来运行php任务脚本文件!

方法四、php Cli模式(推荐)
php Cli模式运行稳定超过70%的php程序员不知道此方法.本人一套php采集系统利于cli模式稳定运行半年,采集文章300+万;
当我们运行利于cli模式运行一个php文件之后会自动执行里面的代码,我们只需要将代码写成一个无限循环即可,不过最好在执行一次循环后加入sleep延时!

注意事项:
1、在无限循环中如果要载入文件必须用require_once或者include_once否则会出现重复函数或者类已经存在之类的错误!
2、如果在无限循环中想要后台操作退出循环可以创建一个文件,每次循环都先判断该文件是否存在,存在则运行代码,不存在则跳过代码,这样我们可以后台控制后台运行的启动与关闭!

定时任务部署以及代码明天接着写!




上一篇:游戏架设周边工具集合贴(一站式下载)
下一篇:Discuz模板的安装方法及说明
回复

使用道具 举报

使用高级回帖 (可批量传图、插入视频等)

发表回复

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
Powered by Discuz! X3.4 粤ICP备18094825号-1  知道创宇云安全  |网站地图
Copyright © 2014-2019 www.qiguiwl.cn All Rights Reserved.
快速回复 返回顶部 返回列表