关闭

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

时间: 2019-01-03阅读: 1473标签: php

后台任务在我们php编程中虽然用的不是很多甚至很多php程序员都没听过甚至觉得后台运行是不可能实现的,本人因为项目需求多次演变在这里分享给大家,本人第一次想实现后台运行是利用 方法二 在其执行完成后输出一段js代码让页面再次执行,然后在服务器中打开该页面!以下实现方式除了方法一我不推荐使用外其他我在项目中都使用过!


方法一、php自带函数实现后台运行

(不推荐使用,不太稳定而且弊端很多)
set_time_limit  允许运行的最长时间,0表示不限制
sleep 运行后延时多久在运行后面的代码
当我什么使用set_time_limit函数后将代码写在一个无限循环里面即可!

set_time_limit(0);
 
while (true) {
 
    //php代码
 
    sleep(10);  //运行一次延时10秒后在执行下一次
 
}


方法二、写成网页浏览的形式打开即执行然后用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、如果在无限循环中想要后台操作退出循环可以创建一个文件,每次循环都先判断该文件是否存在,存在则运行代码,不存在则跳过代码,这样我们可以后台控制后台运行的启动与关闭!

原文地址:http://www.dmzshequ.com/thread-7434-1-1.html

 

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1754

关闭

php 守护进程

首先需要解释的是什么是守护进程。守护进程就是在后台一直运行的进程。比如我们启动的httpd,mysqld等进程都是常驻内存内运行的程序。

php类 属性和方法的关系

public属性:在类的外部和内部都可以调用 被继承能够重构, protected属性:在类的内部可以调用外部不能可以被继承并且重构,private属性:只有在类的内部调用 不能被继承

php中0,空,null和false的区别

null为不存在之意:php底层的zval空间里(结构见下方)没有存其value值,只存储了一个type标志其 IS_NULL(所以解释了 empty(null)=true,isset(null)=false ,isset(‘‘)=true)

在 PHP 7 中不要做的 10 件事

这一天终于来了,从此你不仅仅不应该使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。

php7的新特性

都知道吃别人嚼过的东西不香,那也得吃,总比饿着强。谁让自己的牙没长全(英语,计算机基础)。七拼八凑组合一下,加上自己的理解。重点还是要多看多学,哪怕一篇文章只吸取了那么一丁点的知识

PHP多进程引发的msyql连接数问题

业务中有一块采用了PHP的pcntl_fork多进程,希望能提高效率,但是在执行的时候数据库报错,MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。

php回调函数的概念及实例

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持。这两个函数的区别是call_user_func_array是以数组的形式接收回调函数的参数的。而call_user_func($callback,参数1,参数2,…)的参数个数根据回调函数的参数来确定的。

5分钟理解依赖注入和控制反转

很多人不理解依赖注入和控制反转主要是不熟悉适用场景,其实在很多框架中我们说用到了 IoC 和 DI,实际上都是一回事,他实际上就是我们设计模式的一种:门面模式,也称外观模式。实际上,在去理解 依赖注入 和 控制反转 时,我们需要有两个概念。

对比 PHP 中 new static() 与 new self()

通过new static()与new self()都能产生实例对象,new static()是在PHP5.3版本中引入的新特性,本文对二者稍作对比。new self() 与 new static() 区别在于是否继承,如果没胡继承则二者效果相同,如果有继承,则self仍指向被定义时的类,而static则指向调用者的类。

PHP的高效率写法

尽量静态化;如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。echo的效率高于print,因为echo没有返回值,print返回一个整型;在循环之前设置循环的最大次数,而非在在循环中;

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!