0

0

PHP 有什么工具能做定时任务

php中文网

php中文网

发布时间:2016-06-06 20:26:04

|

1934人浏览过

|

来源于php中文网

原创

好比我每隔12个小时就爬一次我的订单状态

回复内容:

好比我每隔12个小时就爬一次我的订单状态

1、crontab
示例:

crontab -e 添加
# 每隔12小时运行一次脚本.
。* */12 * * *  /usr/bin/php /your/path/cron.php

优点:稳定+简单+方便
缺点:时间间隔只能精确到分钟,按秒定时比较难做到

2 、常驻内存的各种PHP类库
https://github.com/reactphp/react
https://github.com/walkor/workerman

以workerman代码为例,定时任务代码类似

require_once './Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
$task = new Worker();
$task->onWorkerStart = function($task){
    // 每2.5秒运行一次定时任务
    Timer::add(2.5, function(){
          echo "task run\n";
    });
};
Worker::runAll();

优点:常驻内存,支持多进程,自带进程管理,支持秒级甚至毫秒级别定时任务
缺点:需要引入他们的代码库

立即学习PHP免费学习笔记(深入)”;

3、非自有服务器(PHP虚拟主机)上实现php定时任务
有时我们没有服务器shell权限,比如PHP虚拟主机,那么上面两个方案都无法实现,则一般需要使用页面访问的方式执行定时任务。方法如下:

首先:建立一个php任务页面,如task.php,开头必须有

// 保证即使用户把浏览器关掉(断开连接),php也会在服务器上继续执行
ignore_user_abort(true);

然后:任务页面有了,剩下的就是如何定时请求问题了,解决方法有几种大概如下
1、开个浏览器,打开一个html页面,利用js定时器定时ajax请求这个任务页面,需要你一直开个页面
2、利用用户自然访问触发。比如用户正常访问一个页面,加个罗技判断是否该运行定时任务,如果是则发送个curl请求或者用户页面ajax请求任务页面
3、利用朋友的主机定时访问自己站点的任务页面。比如朋友主机有shell权限,则可以利用crontab定时curl访问自己的任务页面
4、借助第三方
一些服务商提供了各种类型的定时任务,例如阿里云的ACE提供了单独的定时任务,你可以填写自己应用下的某个uri。百度云BCE提供了服务器监测功能,每天会按照一定的时间规律访问应用下的固定uri。类似的第三方平台上还有很多定时任务可以用。你完全可以用这些第三方定时任务作为跳板,为你的网站定时任务服务。

总结:
1、如果是时间粒度为分钟,则crontab最方便
2、如果时间粒度很细或者需要多控制,上面PHP类库是比较好的方案
3、如果没有没有shell权限,则考虑第三种方案

如果大家有其它方案,欢迎提出 : )

1、后台执行PHP脚本,常驻内存

一个PHP开发的类库 system_daemon

ignore_user_abort(true);//忽略abort
set_time_limit(0);// 无限制的执行下去
$interval=60*30; 
do{
    //ToDo  
    sleep($interval);
}while(true);

2、linux上的计划任务(crontab)定时执行,比如Laravel Scheduler

00 */2 * * * /usr/local/bin/php /data/www/script.php

3、用C、Go等其他语言,写一个守护进程(Daemon)

这个要看研发实力了

What's the better way?

最简单的办法就是写shell脚本,用脚本来执行php 脚本。很多框架都有任务调度功能,比如Lavarl 你可以参考。

其实可以使用Linux上的Crontab服务来实现定时任务,写个任务脚本,然后使用crontab来定时执行。

传送门:每天一个linux命令:crontab命令

slim框架
slim的cli环境
定时执行软件: crontab,计划任务及其他

YXPHP6.0 豪华版
YXPHP6.0 豪华版

YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,

下载

逻辑代码

$cliEnvironment = new \Slim\Extras\Environment();

$app = new \Slim\Slim(array(
    'environment' => $cliEnvironment
));
$app->get(
    '/hello/:name',
    function ($name) {
        echo "Hello, $name";
    }
);
$app->run();

运行命令

php test.php hello Ahmet
#Output
Hello, Ahmet

定时任务

  • 如前几贴都提到 crontab 这在Linux环境下首推,

  • 如果windows有定时计划或其他软件,

  • OSX有自己的一套定时任务系统(也比较推荐),也可以安装crontab

在crontab中添加任务,由Linux系统的cron进程定时执行任务,这个任务脚本同样可以用PHP来写。

crontab -e 添加
# 每隔12小时(12:00,24:00)运行一次脚本.
* */12 * * * /png/www/example.com/cron/tast.php

chmod +x tast.php
#!/png/php/5.4.39NTS/bin/php


                            
            

crontab 没啥好讨论的

可以在后台开启一个守护进程,监控

crontab

用crontab, 然后写个守护进程就可以

mysql 的存储过程不是挺好吗?

最简单还是crontab
当然,如果你想折腾这些所谓php框架的话,可以试试这个
https://github.com/kohkimakimoto/workerphp

用计划任务方便, 但是在单独的脚本文件中处理逻辑很麻烦, 在CP中可以很容易的处理

在命令行模式下运行

你可以像写web一样使用MVC, 只是入口不同而已

这个功能用swoole扩展来做,易如反掌! swoole扩展能做得更多

参考连接
swoole

crontab

最常见的做法应该还是crontab 简单粗暴

为什么要整的那么麻烦,如果是Linux,直接上crontab,推荐下面这篇文章:

Linux定时任务

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号