相关文章推荐
耍酷的刺猬  ·  JS 深入理解代码复用模式-CSDN博客·  1 年前    · 
爱热闹的奔马  ·  造血干细胞(成体干细胞)_搜狗百科·  2 年前    · 
不要命的芒果  ·  游戏王Arc-V - 歌单- 网易云音乐·  2 年前    · 
乖乖的马克杯  ·  大连超越官宣执行主帅转正三年长约锁潜力土帅_ ...·  2 年前    · 
淡定的保温杯  ·  多少分贝以上算噪音污染·  2 年前    · 
小百科  ›  PHP定时任务执行者同时实现-腾讯云开发者社区-腾讯云
php
气宇轩昂的领带
2 年前
作者头像
Inkedus
0 篇文章

PHP定时任务执行实现

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Inkedus > PHP定时任务执行实现

PHP定时任务执行实现

作者头像
Inkedus
发布 于 2020-04-16 15:15:28
1.4K 0
发布 于 2020-04-16 15:15:28
举报

PHP定时运行任务 对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用PHP动态语言开发的,而对于PHP的实现决定了它没有Java和.Net这种AppServer的概念,而http协议是一个无状态的协议,PHP只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存。

如果非要PHP去实现定时任务, 可以有以下几种解决方案:

一. 简单直接不顾后果型

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
ini_set('memory_limit','512M'); // 设置内存限制
$interval=60*30;// 每隔半小时运行
do{//ToDo 
    sleep($interval);// 等待5分钟
}while(true);

缺点 : 启动之后,便无法控制, 除非终止 PHP 宿主. 不要采用这样方法, 除非你是黑客.

二. 简单可控型 config.php文件

<?php
return 1;
cron.php文件
ignore_user_abort();
//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
    $run = include 'config.php';
    if(!$run)
        die('process abort');//ToDo
    sleep($interval);// 等待5分钟
}while(true);

通过 改变config.php 的 return 0 , 来实现停止程序. 一个可行的办法是config.php文件和某个特殊表单交互, 通过HTML页面设置一些变量来进行配置

缺点: 占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 .

三. 简单改进型

<?php
$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*function*/ 
 
推荐文章
耍酷的刺猬  ·  JS 深入理解代码复用模式-CSDN博客
1 年前
爱热闹的奔马  ·  造血干细胞(成体干细胞)_搜狗百科
2 年前
不要命的芒果  ·  游戏王Arc-V - 歌单- 网易云音乐
2 年前
乖乖的马克杯  ·  大连超越官宣执行主帅转正三年长约锁潜力土帅_手机新浪网
2 年前
淡定的保温杯  ·  多少分贝以上算噪音污染
2 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南