php定时任务,php定时器,php定时器,php定时任务管理,php定时任务框架,php实现定时任务,php定时任务系统

简介: php定时任务,php定时器,php定时器,php定时任务管理,php定时任务框架,php实现定时任务,php定时任务系统

本教程使用的定时任务基于EasyTak实现,EasyTask官方参考文档https://gitee.com/392223903/EasyTask

首先我们必须明白PHP的定时器只能基于CLI命令行形式运行,由于FPM形式用完即走,内存立即释放,无法做到常驻,当然我们也可以让FPM常驻起来,但是内存开销过大。因此FPM本身就是官方用来提供给我们做网站CURD的,而CLI模式才是后端核心,大量的PHP服务都是基于PHP_CLI模式,因此高级程序员更必须了解CLI模式。但凡大点的公司都是用FPM处理网页,CLI处理服务队列。下面的定时任务也是基于CLI执行。

我们使用的定时任务包是EasyTask,先安装它(需要安装的扩展请看它的官方文档,切记没有必要安装event扩展):

composer require easy-task/easy-task

我们创建一个console.php简单使用它:

// 加载Composer代码

require './vendor/autoload.php';

//初始化

$task = new Task();

// 设置非常驻内存

$task->setDaemon(false);

// 设置项目名称

$task->setPrefix('EasyTask');

// 设置记录运行时目录(日志或缓存目录)

$task->setRunTimePath('./Application/Runtime/');

// 1.添加闭包函数类型定时任务(开启2个进程,每隔10秒执行1次你写闭包方法中的代码)

$task->addFunc(function () {

   $url = 'https://www.gaojiufeng.cn/?id=243';

   @file_get_contents($url);

}, 'request', 10, 1);

// 启动任务

$task->start();

我们执行这个脚本:

php console.php start

如果是windows系统,我们看到启动了2个cmd窗口,1个窗口是守护进程,1个是执行上面的每隔10s访问网站的定时任务的进程,测试成功。

那么我们如果不显示cmd执行呢,只需要修改为常驻运行:

// 设置常驻内存

$task->setDaemon(true);

那我们如何添加多个定时任务呢?只需要多调用addFunc方法添加任务进去即可,下面再添加1个15秒的定时任务

$task->addFunc(function () {

   $url = 'https://www.gaojiufeng.cn/?id=2432';

   @file_get_contents($url);

}, 'request2', 15, 1);

上面只是说添加任务,那么如何去管理呢?官方给了一个基础的命令整合命令:

// 获取命令

$force = empty($_SERVER['argv']['2']) ? '' : $_SERVER['argv']['2'];

$command = empty($_SERVER['argv']['1']) ? '' : $_SERVER['argv']['1'];

// 配置任务

$task = new Task();

$task->setRunTimePath('./Application/Runtime/');

$task->addFunc(function () {

       $url = 'https://www.gaojiufeng.cn/?id=271';

       @file_get_contents($url);

   }, 'request', 10, 2);;

// 根据命令执行

if ($command == 'start')

{

   $task->start();

}

elseif ($command == 'status')

{

   $task->status();

}

elseif ($command == 'stop')

{

   $force = ($force == 'force'); //是否强制停止

   $task->stop($force);

}

else

{

   exit('Command is not exist');

}

启动任务: php console.php start

查询任务: php console.php status

普通关闭: php console.php stop

强制关闭: php console.php stop force

当然你可可以在任务管理中找到所有进程进行关闭。事实上EasyTask还支持addClass方式添加定时器去执行类的方法,也支持addCommand方法添加定时器去执行cmd或者shell命令,也支持crontab格式的指令,可以了解官网文档尝试。不懂可以进群讨论。

目录
相关文章
|
20天前
|
前端开发 关系型数据库 MySQL
PHP外链网盘系统网站源码
> 本文将详细介绍如何从零构建一个基于PHP和MySQL的文件管理系统,分解项目代码并剖析每个模块的功能。我们将以`index.php`、`config.php`和`api.php`这三个核心文件为例,详细展示如何设计文件列表、数据库配置和文件上传接口,从而实现一个完整的文件管理系统。该文章可以作为学术研究和代码实现的参考。
148 98
|
4天前
|
API PHP
2025宝塔API一键建站系统PHP源码
2025宝塔API一键建站系统PHP源码
113 88
|
16天前
|
关系型数据库 MySQL PHP
免登录游客卡密发放系统PHP网站源码
这是一个简单易用的卡密验证系统,主要功能包括: 卡密管理和验证,多模板支持,响应式设计,验证码保护,防刷机制,简洁的用户界面, 支持自定义模板,移动端优化,安全性保护,易于部署和维护。
139 77
|
3月前
|
SQL 安全 PHP
PHP 自发布以来一直在 Web 开发领域占据重要地位,PHP 8 更是带来了属性、刚性类型等新特性。
【10月更文挑战第1天】PHP 自问世以来,凭借其易用性和灵活性,在 Web 开发领域迅速崛起。从简单的网页脚本语言逐步演进为支持面向对象编程的现代语言,尤其自 PHP 5.3 引入命名空间后,代码组织和维护变得更加高效。PHP 7 的性能优化和 PHP 8 的新特性(如属性和刚性类型)进一步巩固了其地位。框架如 Laravel、Symfony、Yii2 和 CodeIgniter 等简化了开发流程,提高了效率和安全性。
68 2
|
1月前
|
Linux PHP 数据安全/隐私保护
2024授权加密系统PHP网站源码
2024授权加密系统PHP网站源码
115 58
|
18天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
140 18
|
1月前
|
前端开发 PHP 数据安全/隐私保护
知识付费系统源码 PHP
在数字经济背景下,知识付费成为新兴领域,尤其在线教育平台的兴起,使更多教育者通过知识付费系统销售课程,实现数字化转型与收入提升。开发此类平台需考虑众多技术细节和业务需求,如使用PHP语言实现支付功能,确保安全性、性能和可扩展性,选择合适的技术方案至关重要。
56 4
知识付费系统源码 PHP
|
25天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
115 3
|
2月前
|
关系型数据库 MySQL PHP
骗子曝光系统网站PHP源码
骗子曝光系统网站PHP源码 PHP 7.0+ Mysql 5.6+ 上传访问域名/install安装
67 2
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
80 4