首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >workerman的Crontab定时任务实例

workerman的Crontab定时任务实例

原创
作者头像
OwenZhang
发布于 2022-05-30 15:09:54
发布于 2022-05-30 15:09:54
1.4K0
举报
文章被收录于专栏:Owen's WorldOwen's World

本文环境 CentOS8.0,PHP8.1,Nginx1.8,Workerman 4.0\ 不懂的可以评论联系我。 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。

workerman介绍

Workerman是一款纯PHP开发的开源高性能的PHP 应用容器。

Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的服务框架,你可以用它开发tcp代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。

实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常驻内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协议以及各种自定义协议。拥有定时器、异步socket客户端、异步Redis、异步Http、异步消息队列等众多高性能组件。

Crontab介绍

Linux crontab 是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

而 linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

composer 安装workerman/crontab

workerman/crontab 是一个基于workerman的定时任务程序,类似linux的crontab。workerman/crontab支持秒级别定时。

代码语言:txt
复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer require workerman/crontab

config/process.php

代码语言:txt
复制
// crontab定时任务
    'task'           => [
        'handler' => process\CrontabTask::class
    ],

process/CrontabTask.php

代码语言:txt
复制
<?php

namespace process;

use support\Log;
use Workerman\Crontab\Crontab;

class CrontabTask
{
    /**
     * Crontab定时任务
     *
     * 0   1   2   3   4   5
     * |   |   |   |   |   |
     * |   |   |   |   |   +------ day of week (0 - 6) (Sunday=0)
     * |   |   |   |   +------ month (1 - 12)
     * |   |   |   +-------- day of month (1 - 31)
     * |   |   +---------- hour (0 - 23)
     * |   +------------ min (0 - 59)
     * +-------------- sec (0-59)[可省略,如果没有0位,则最小时间粒度是分钟]
     *
     * @return void
     */
    public function onWorkerStart()
    {
//        // 每秒的第一秒执行
//        new Crontab('*/1 * * * * *', function () {
//            Log::info('owen' . date('Y-m-d H:i:s'));
//        });

//        // 每分钟的第一秒执行
//        new Crontab('1 * * * * *', function () {
//            echo date('Y-m-d H:i:s') . "\n";
//        });
//
//        // 每天的7点50执行,注意这里省略了秒位
//        new Crontab('50 7 * * *', function () {
//            echo date('Y-m-d H:i:s') . "\n";
//        });
//
//        // 每2分钟执行一次,注意这里省略了秒位
//        new Crontab('*/2 * * * *', function () {
//            echo date('Y-m-d H:i:s') . "\n";
//        });
    }
}

运行状态

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • workerman介绍
  • Crontab介绍
  • composer 安装workerman/crontab
  • config/process.php
  • process/CrontabTask.php
  • 运行状态
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档