首页 > 其他分享 >Webman框架使用异步任务

Webman框架使用异步任务

时间:2023-11-20 14:12:12浏览次数:470  
标签:异步 task 框架 Webman app connection json taskConnection

首先在app目录下创建Task.php

<?php
namespace app;

use Workerman\Connection\TcpConnection;
class Task
{
/**
* 只会执行一次
* @return void
*/
public function onWorkerStart(){
  echo "进程启动";
}

public function onMessage($connection, $task_data)
{
  $connection->send(json_encode(['name' => 1]));
}

public function onConnect ($connection){
  echo "new connection from ip " . $connection->getRemoteIp() . "\n";
}

}

配置 config/process.php,新增

return [
 ......
'task' => [
   'handler' => app\Task::class,
  'listen' => 'text://0.0.0.0:12345',
  'count' => 20, //进程数量,默认为1
  'reusePort' => true, //是否负载均衡到n个进程
],
];

调用


<?php

namespace app\controller;

use app;
use app\Message;
use Workerman\Connection\AsyncTcpConnection;

class IndexController
{
/**
* 用来测试远程服务器是否还正常启动
* @return \support\Response
*/
public function index()
{
  $taskConnection = new AsyncTcpConnection('text://127.0.0.1:12345');
  // 发送数据
  $taskConnection->send(json_encode(['cmd' => 'get', 'data' => []]));
  $taskConnection->onMessage = function (AsyncTcpConnection $taskConnection, $task_result) {
  sleep(3); //这里模拟延迟
  // 结果
  var_dump($task_result);
  // 获得结果后记得关闭异步连接
  $taskConnection->close();
  };
  $taskConnection->connect();
  return json(['code' => Message::Success]);
}
}

标签:异步,task,框架,Webman,app,connection,json,taskConnection
From: https://www.cnblogs.com/qcy-blog/p/17843813.html

相关文章

  • 未安装项目的目标框架
    原文链接:https://zhidao.baidu.com/question/328511311485098325.html直接下载安装4.6.2版本的.NETFramework。再网上下载安装时提示已安装过。点击第二个,跳转到一个下载安装的网站,将vs关掉,再下载安装开发者工具包(SDK)就成功了。SDK就是(Softwaredevelopmentkit):软件开发工......
  • 俄罗斯方块框架
    创建一个完整的俄罗斯方块游戏是一个复杂的任务,因为它涉及图形界面、事件处理和游戏逻辑等多个方面。由于这个任务的复杂性和长度,我无法一次性提供完整的代码。不过,我可以帮您分步骤理解并开始实现这个游戏。俄罗斯方块的实现通常包括以下几个主要部分:游戏界面的绘制:绘制游戏......
  • Spring异步机制:@Async
    概述当一个方法标注@Async注解时,该方法的调用将异步发生;这意味着调用者将在调用后立即返回,方法的实际执行将发生在提交给SpringTaskExecutor的任务中。示例示例1使用@EnableAsync注解启用异步机制@EnableAsync@ConfigurationpublicclassAsyncConfig{} @Service......
  • visual studio2022中如何添加另外新下载的框架Net.framework4.8.1 ?
    visualstudio2022中如何添加另外新下载的框架Net.framework4.8.1?作者:张晓栋链接:https://www.zhihu.com/question/577090786/answer/2832018198来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。不要自己去下载,需要通过VisualStudioInstaller安......
  • 集合框架(二)
    Set集合Set集合是一个无序不重复的接口,里面有两个实现类HashSet和TreeSetHashSet类 创建HashSet的语法:①HashSet名称=newHashSet();②HashSetset1=newHashSet(初始化容量数);③HashSetset2=newHashSet(初始化容量数,负载因子);负载因子:当数量到达容量的多少时进行......
  • 史上功能最全的Java权限认证框架!
    大家好,我是Java陈序员。权限认证是我们日常开发绕不过的话题,这是因为我们的应用程序需要防护,防止被窜入和攻击。在Java后端开发中,实现权限认证有很多种方案可以选择,一个拦截器、过滤器也许就可以轻松搞定。当然,现在也有很多成熟的框架,供我们选择。轻量的Shiro,Spring家族的......
  • linux环境安装可操作图库语言Gremlin的图框架HugeGraph
    原创/朱季谦 若你还没接触过图数据库,可能看到这个概念时,会比较蒙蔽。图是什么?图数据库又是什么?首先,在数据结构中,图是一种由顶点(vertex)集合及顶点间关系集合组成的一种非线性数据结构。而图数据库,则是以图这种具有点边结构来增、删、改、查之类操作的NoSQL数据库,它特别擅长处理大数......
  • Flutter/Dart第21天:Dart异步编程(Future/Stream)
    Dart官方文档:https://dart.dev/language/async重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。Future处理我们有2种方式编写Future异步代码:使用async和wait关键字使用FutureAPI(ht......
  • SpringMVC框架第一天
    目录SpringMVC的基本概念三层架构和MVC三层架构MVC模型MVC概述SpringMVC是什么SpringMVC在三层架构的位置SpringMVC的优势SpringMVC的入门SpringMVC的入门案例入门案例中的组件DispatcherServlet:前端控制器HandlerMapping:处理器映射器Handler:处理器HandlAdapter:处理器适配器ViewR......
  • AJAX手写JQuery框架封装AJAX请求和常见方法实现项目功能省市联动查询效果------AJAX
    建立一个SQL表CREATETABLEt_stu(idBIGINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(255),ageINT,addressVARCHAR(255));INSERTINTOt_stu(id,username,age,address)VALUES(NULL,"zhangsan",15,"广州")INSERTINTOt_stu(id,username,age,address)......