Thinkphp6 baiy/think-async redis 异步代码执行/异步延迟执行/异步事件订阅
配置文件async.php
<?php
use Baiy\ThinkAsync\Subscribe\ConfigFileEventGetter;
use Baiy\ThinkAsync\Subscribe\DemoSubscriber;
use crmeb\subscribes\DemoAsyncSubscriber;
use crmeb\subscribes\DemoAsyncSubscriber01;
return [
// 异步执行默认队列
'async_exec_method_queue' => 'async_exec_method',
// 异步执行自定义队列
'async_exec_method_custom_queue' => [
'async_exec_method_custom' => '自定义异步执行队列',
'async_exec_method_custom01' => '自定义异步执行队列01',
],
// 异步订阅默认队列名称
'subscribe_default_queue' => 'subscribe_default',
// 异步订阅事件获取类
'subscribe_event_get_class' => ConfigFileEventGetter::class,
// 异步订阅事件配置(可通过修改`subscribe_event_get_class`改变配置来源)
'subscribe_event_config' => [
[
'name' => 'demo',
'title' => '演示事件',
'queue' => 'async_subscribe_demo', // 事件处理队列 为空使用异步订阅默认队列
// 事件订阅者配置
'subscriber' => [
[DemoSubscriber::class, 'handle'],
]
],
[
'name' => 'zidingyishijian',
'title' => '自定义事件',
'queue' => 'async_subscribe_zidingyi',
// 事件订阅者配置
'subscriber' => [
[DemoAsyncSubscriber::class, 'handle'],
[DemoAsyncSubscriber01::class, 'handle'],
]
],
]
];
异步代码执行/异步延迟执行/异步事件订阅文件PublicController.php
<?php
namespace app\api\controller\demo;
use Baiy\ThinkAsync\Facade\Async;
/**
* 公共类
* Class PublicController
* @package app\api\controller
*/
class PublicController
{
//异步代码执行/异步延迟执行/异步事件订阅
//http://meishu.local/api/demo/demoasync
public function demoasync(){
// 异步执行默认队列
//Async::exec(self::class, 'test', 'exec');
//异步执行代码使用自定义队列
//Async::execUseCustomQueue(self::class, 'test','async_exec_method_custom', 'exec');
//Async::execUseCustomQueue(self::class, 'test','async_exec_method_custom01', 'exec');
// 异步延迟执行默认队列 延迟10秒
//Async::delay(10, self::class, 'test', 'delay');
// 异步延迟执行默认队列 延迟10秒
//Async::delayUseCustomQueue(10, self::class, 'test','async_exec_method_custom', 'delay');
// 获取所有队列标示
//var_dump(Async::queue());
// 获取队列长度
//var_dump(Async::queueSize('async_exec_method_custom'));
// 获取队列名称
//var_dump(Async::queueName('async_exec_method_custom'));
//事件订阅
//事件触发
Async::trigger('zidingyishijian',33,'lisi');
echo 11;
}
public static function test()
{
$arr['name'] = mt_rand(111111,999999);
$res = Db::name('demo')->insert($arr);
}
}
事件订阅者DemoAsyncSubscriber.php
<?php
namespace crmeb\subscribes;
use think\facade\Db;
class DemoAsyncSubscriber
{
public static function handle($id,$name){
$arr['name'] = $id.$name;
$res = Db::name('demo')->insert($arr);
}
}
事件订阅者DemoAsyncSubscriber01.php
<?php
namespace crmeb\subscribes;
use think\facade\Db;
class DemoAsyncSubscriber01
{
public static function handle($id,$name){
$arr['name'] = $name.$id;
$res = Db::name('demo')->insert($arr);
}
}
执行命令:
php think queue:work --queue async_subscribe_zidingyi
Thinkphp6 baiy/think-async redis 异步代码执行/异步延迟执行/异步事件订阅相关推荐
- iOS: 零误差或极小误差的定时执行或延迟执行?
问题如下: 节奏类游戏需要执行很多的跟音乐节拍相关的操作,并且为了保证节奏感,需要让操作跟节拍的关系十分紧密.对两者间隔要求不能超过0.02秒或更低. 目前使用了 GCD 中的 asyncAfter( ...
- .net coer IQueryable类型的执行逻辑(延迟执行),认真看,你会有收获的。
先看图 IQueryable 在使用EF框架时候,我们都会使用Linq表达来创建sql语句式进行数据查询 使用Linq表达式创建的变量 就是IQueryable变量 在完成IQueryable的创建以 ...
- js 延期执行_js延迟执行函数
在js中,延迟执行函数有两种:setTimeout和setInterval setTimeout("test()","2000"); //2000毫秒后执行te ...
- php设置延迟代码执行,PHP 延迟执行
作为一名菜鸡的第一个记录 需求是 后台派单的时候让骑手3分钟内接单..如果不接单 自动回到带分配的界面.. 先在派单的时候生成一个文件 然后通过下面的函数调用 一个脚本// 远程请求(不获取内容)函 ...
- 异步生成器_使用生成器实现异步并等待
异步生成器 Nowadays we can write our asynchronous code in a synchronous way thanks to the async and await ...
- LINQ 的查询执行何时是延迟执行,何时是立即执行,以及查询的复用
延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99() { int[] numbers = ...
- Lambda 的延迟执行
Lambda 的延迟执行 使用 Lambda 表达式的主要原因是:将代码的执行延迟到一个合适的时间点,即调用的时候. 所有的 Lambda 表达式都是延迟执行的. 因为匿名内部类的方法都是要等 ...
- vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用
vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用 异步解决方案:async/await 多个await,同步拿到数据再处理 多个接口处理拿到数 ...
- 使用 Async / Await 来编写简明的异步代码
原文链接:https://blog.patricktriest.com/what-is-async-await-why-should-you-care/ 复制代码 停止书写回调函数并爱上ES8 以前, ...
- js等待异步执行完再执行,js如何让代码同步执行
JS方法怎么同步执行 . 方法1内部用了var表示内部变量执行完一次后会自动释放:方法2内的变量cc不能与方法1重名:示例代码如下测试可以varstr='';functioncfun(obj){str ...
最新文章
- PuTTy:PuTTy的简介、安装、使用方法之详细攻略
- 计算机英语os是什么意思,os是什么意思(为什么手机系统有的叫OS)
- XCTF WEB simple_js
- mysql语句:索引,游标,存储过程,视图,分区,分库分表,数据库集群,数据库负载均衡...
- cassandra 入门_Apache Cassandra和Java入门(第二部分)
- 绿联怎么样_移动电源降价了,小米、京选、绿联充电宝怎么选,网友:都非常合适...
- IE浏览器整页截屏程序
- 腾讯优测-优社区干货精选 |安卓适配之Camera拍照时快门咔嚓声
- basys3利用microblaze连接Pmod ad2
- python安装使用pip安装numpy
- 推荐C语言编译器(手机APP)
- 细胞穿膜肽TAT/血管肽Angiopep/靶向多肽cRGD偶联TIO2二氧化钛纳米粒(TiO2-Angiopep)
- java 批量生成条形码,打包zip(springboot)
- js去掉url中的域名的方法
- Android系统原理及开发要点详解
- Matplotlib绘制图片——膨胀算法
- 网络舆情如何有效分析评估解决的方法措施
- 视觉SLAM学习路线
- 基于Python+django的 古诗词在线学习网站-计算机毕业设计
- 基于docker的influxdb时序数据库搭建
热门文章
- 奶瓶 linux内核,CDlinux专用inflator-打气筒(reaver的图形化,beini奶瓶作者编写)下载 - 无线安全新手入门 - 无线论坛...
- Docker设置端口映射
- 阿里巴巴重要开源项目汇总(转载)
- 股票 - - 常用指标【下】
- 【AI视野·今日CV 计算机视觉论文速览 第220期】Wed, 16 Jun 2021
- 专业词汇扫盲:MRR(Mean reciprocal rank) ,long-tail,link prediction
- php 队列创建,php 队列的实现方法
- php队列处理mysql_php队列处理:php消息队列实现原理(图文)
- SAP中销售订单中的条件类型修改控制问题配置分析
- AE导出透明背景gif