首页 > 编程语言 >swoole-crontab基于swoole的定时器程序,支持秒级处理

swoole-crontab基于swoole的定时器程序,支持秒级处理

时间:2023-08-02 23:03:07浏览次数:37  
标签:src index admin swoole crontab 秒级 path php



Swoole-Crontab(基于Swoole扩展)

https://github.com/osgochina/Donkey

1.概述

  • 基于swoole的定时器程序,支持秒级处理.
  • 异步多进程处理。
  • 完全兼容crontab语法,且支持秒的配置,可使用数组规定好精确操作时间
  • 单中心-多客户端模式,能够横向扩展
  • web界面管理,增删改查任务,完整的权限控制.
  • 请使用swoole扩展1.8.0+
  • v0.8版本入口

2.架构图



swoole-crontab基于swoole的定时器程序,支持秒级处理_java


3.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位,则最小时间粒度是分钟]


4.开始使用

1.修改配置

1.1 中心服配置

/path/to/src/center/configs/dev/db.php 修改数据库配置
进入mysql数据库执行/path/to/doc/crontab.sql 的sql文件
src/center/_init.php   修改 PUBLIC_PATH   swoole framework框架所在的路径

1.2 admin管理后台的配置文件修改

src/admin/configs/dev/db.php  修改数据库配置
src/admin/configs/dev/service.php  中心服启动时候监听的ip端口,需要跟中心服通讯
src/public/index.php  
    修改 WEBROOT       域名
    修改 PUBLIC_PATH   swoole framework框架所在的路径

2.下载swoole framework框架到本地/data/www/public/ framework

3.配置nginx,列子如下:

server {
    listen       80;
    server_name  crontab.test.com;

    root /data/www/wwwroot/swoole-crontab/src/public;

    index index.php index.html;
    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php;
        }
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

4.启动中心服

/path/to/php /path/to/src/center/center.php  start -d -h 127.0.0.1 -p 8901

5.启动客户端

-h 是指中心服地址 -p 中心服端口
/path/to/php /path/to/src/agent/agent.php start -d -h 127.0.0.1 -p 8901

6.web界面访问

输入nginx配置的地址访问web界面,默认用户名/密码是admin/admin

7.操作步骤

请按照以上步骤操作,因为admin后台是通过接口连接上中心服来进行管理.所以必须先启动中心服,再打开admin管理后台

4.使用交流

1.后台截图



swoole-crontab基于swoole的定时器程序,支持秒级处理_java_02


2.更加清晰的架构图.感谢@xufei100



swoole-crontab基于swoole的定时器程序,支持秒级处理_java_03


QQ群:560807006

5.TODO

  • 去除nginx依赖
  • 配置文件统一
  • 去除swoole framework框架的依赖
  • restful api接口
  • 通过命令行管理任务
  • 无中心服依赖


标签:src,index,admin,swoole,crontab,秒级,path,php
From: https://blog.51cto.com/owenzhang24/6944110

相关文章

  • swoole和workerman究竟分别是什么?
    众所周知,php是单进程的脚本运行模式。当然,php-fpm是多进程的,不过这个多进程,并不支持多并发。当并发高起来,多进程就显得那么的“菜鸡”。cpu的调用就会混乱不看,性能极差。(php-fpm(点击查看))如果想在代码里,多进程开发怎么办呢?假设有这么一个需求:查询多个数据库里订单表里的10w条数......
  • 第十五章 例行性工作排程(crontab)
    第十五章例行性工作排程(crontab)15.1什么是例行性工作排程有的工作是例行性的,有的工作则是临时发生的。15.1.1工作排程的种类:at,cronat:at是个可以处理仅执行一次就结束排程的指令,不过要执行at时,必须要有atd这个服务的支援才行。crontab:crontab这个指令所设定的......
  • 利用 timeb 生成毫秒级别随机数
    众所周知,重复打开相同的可执行文件,想要输出的数不同,往往需要以时间作为随机种子。如:#include<bits/stdc++.h>intmain(){srand(time(0));inta=rand();printf("%d\n",a);}但是,以这种方式,在每1秒内重复运行这个程序,输出的随机数都是相同的。那么,想要......
  • 携程海外MySQL如何实现毫秒级数据复制?
    一、前言 在携程国际化战略背景下,海外业务将成为新的发力点,为了保证用户高品质的服务体验,底层数据势必需要就近服务业务应用。一套标准且普适的数据复制解决方案能够提升业务决策效率,助力业务更快地触达目标用户。 DRC(DataReplicateCenter)作为携程内部数......
  • Linux定时任务之crontab
    Linux定时任务之crontab​cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:crontab-u//设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数crontab-l//列出某个用户cron服务的详细内容crontab-r//删除没个用户的cr......
  • 宝塔php7.3安装swoole拓展问题
    宝塔选择php7.3安装swoole拓展后,发现还是不能用swoole;php-v发现默认版本是php7.4解决办法:切换默认PHP版本即可1.rm-f/usr/bin/php//删除默认的配置2.将默认版本修改成想要的版本,如:7.3ln-sf/www/server/php/73/bin/php/usr/bin/php ......
  • 时间戳格式化生成毫秒级
    std::stringmillisecond_to_str(conststd::int64_t&milliseconds){std::chrono::millisecondsms(milliseconds);std::chrono::time_point<std::chrono::high_resolution_clock,std::chrono::milliseconds>t1(ms);std::time_tt=std::chrono......
  • crontab 制定定时任务怎么弄
    要使用crontab创建定时任务,请按照以下步骤进行操作:1.打开终端或命令提示符。2.输入以下命令以编辑当前用户的crontab文件:```shellcrontab-e```3.如果是首次编辑crontab文件,系统会要求选择一个文本编辑器。选择你喜欢的编辑器,并按照系统提示进行操作。4.在打开的......
  • PHP 获取13位毫秒级时间戳
    $dateTime不传值取当前时间/***@parammixed$dateTime任意有效时间格式**@returnint*@throws\Exception*/functiongetMillisecond($dateTime=null):int{$microTime=$dateTime===null?microtime(true):(new\DateTime($dateTime))->getTimes......
  • crontab
    crontab提交和管理用户的需要周期性执行的任务补充说明crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则......