相关文章推荐
俊逸的匕首  ·  查看和修改主机名 | Microsoft ...·  11 月前    · 
好帅的苦咖啡  ·  【vision ...·  2 年前    · 
刚失恋的啤酒  ·  怎么让div内容超出后自动显示滚动条-百度经验·  2 年前    · 
果断的土豆  ·  thymeleaf按钮点击click方法传值 ...·  2 年前    · 
唠叨的碗  ·  云原生 面试题-掘金·  2 年前    · 
Code  ›  PHP定时任务执行实现开发者社区
php
https://cloud.tencent.com/developer/article/1615295
气宇轩昂的领带
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*/ 
 
推荐文章
俊逸的匕首  ·  查看和修改主机名 | Microsoft Learn
11 月前
好帅的苦咖啡  ·  【vision transformer】DETR原理及代码详解(三)-阿里云开发者社区
2 年前
刚失恋的啤酒  ·  怎么让div内容超出后自动显示滚动条-百度经验
2 年前
果断的土豆  ·  thymeleaf按钮点击click方法传值_thymeleaf 按钮_易昂昜的博客-CSDN博客
2 年前
唠叨的碗  ·  云原生 面试题-掘金
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号