tp5.1 swoole 实现异步处理
客户端请求:
<?php
namespace app\index\controller; class Index
{
public function index()
{
$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$ret = $client->connect("192.168.10.10", 9502);
if(empty($ret)) {
echo 'error!connect to swoole_server failed';
} else {
dump('ccc');
$client->send('blue');//这里只是简单的实现了发送的内容
} echo 'success';
}
} 服务端异步处理:
<?php
/**
* Created by PhpStorm.
* Date: 2019/10/30
* Time: 9:54
*/
namespace app\index\controller; use think\swoole\Server; class Swoole extends Server
{
protected $host = '0.0.0.0';
protected $port = 9502;
protected $serverType = 'tcp';
protected $option = [
'worker_num'=> 4,
'daemonize' => false,
'backlog' => 128,
'task_worker_num' => 4, //任务工作进程
]; public function onConnect($serv, $fd)
{
echo "server: handshake success with fd{$fd}\n";
} public function onTask($serv, $task_id, $from_id, $data)
{
echo "New AsyncTask[id=$task_id]".PHP_EOL;
//返回任务执行的结果
sleep(5);
$serv->finish("$data -> OK");
} public function onFinish($serv, $task_id, $data)
{
echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
} //接收客户端发送的数据
public function onReceive($server, $fd, $from_id, $data)
{
$task_id = $server->task($data);
echo "开始投递异步任务 id=$task_id\n";
//$server->send($fd, 'Swoole: '.$data);
} public function onClose($serv, $fd)
{ } } 启动服务 :php index.php index/Swoole/start
tp5.1 swoole 实现异步处理的更多相关文章
- swoole 使用异步redis的前置条件
redis安装 官网下载redis 下载完成之后解压: 进入redis目录执行make: 进入src目录启动redis 启动成功如下: 启动后连接redis 编译安装hiredis 下载:https: ...
- Swoole学习(七)Swoole之异步TCP服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...
- 用swoole实现异步任务队列
应用场景如下: 假如要发100封邮件,for循环100遍,这种方法显然是不可取的. 在一些比较繁杂的业务里,我们很可能有超过1万的邮件要群发.那我们怎么处理这个延迟的问题? 答案就是用异步.把&quo ...
- thinkphp5 swoole 执行异步任务
目录结构: 服务器端: <?php /* *author:hdj */ namespace app\Console; use think\console\Command; use think\c ...
- swoole(PHP异步网络通信引擎)的结构和运行流程
swoole结构说明和运行流程 主要分为三个部分: 1.Master:swoole的主进程 处理swoole核心的事件驱动, 它包含多个线程(蓝色Reactor), 所有事件的监听都在Reactor实 ...
- swoole之异步文件IO
一.代码部分 读: <?php /** * 异步文件系统仅限于4.3.0之前的版本 * 读取文件 */ $filename = dirname(__FILE__).DIRECTORY_SEPAR ...
- swoole使用异步进程通信
$process = new swoole_process(function($pro){ $pro->exec('//linux中的php命令所在绝对路径', ['//执行文件绝对路径']); ...
- swoole使用异步redis
1.lnmp安装redis拓展 wget http://download.redis.io/releases/redis-4.0.9.tar.gz chmod 755 redis-4.0.9.tar. ...
- swoole安装异步reids
/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --enable-async ...
随机推荐
- css---过渡天坑
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JavaScript 对象与函数
对象参考手册 Array Boolean Date Math Number String RegExp Global 前言 在js中什么都是对象(包括函数). 函数是用来实现具体功能的代码,用一种方式 ...
- Python 学习杂项
#print("Hello World!") #name = "nihfjkds" age = 454 num1 = 1 num2 = 2 #print(nam ...
- JS 变量的数据类型 运算符
JS中变量的类型有:数值型.字符型.布尔型.undefined.null.array.object.function 1.数值型:可以进行算术运算的(加.减.乘.除) 数值型包括:整型(整数)和浮点型 ...
- SpringAOP中的aop:config标签
我们使用Spring的AOP功能的时候发现,我们使用普通的配置方式的时候,我们无法精确的确定将切面类中的哪个方法切入到哪个切入点上, 所以我们可以使用aop的专用标签来完成相关的配置.其中主要表现是使 ...
- Java工具之NotePad++使用技巧
按住Alt键 拖动鼠标左键 批量添加 如,等 批量添加逗号, 下面, 竖排 变 横排 ctrl + f 使用正则表达式 \r\n 替换换行符 使用:sql语句中的 过滤条件 in中,往往适合范围查找 ...
- Nodejs之路(四)—— MongoDB&MySQL
一.MongoDB 1.1概述 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非 ...
- Activiti添加批注(comment)信息
在每次提交任务的时候需要描述一些批注信息,例如:请假流程提交的时候要描述信息为什么请假,如果领导驳回可以批注驳回原因等 1.添加批注 // 由于流程用户上下文对象是线程独立的,所以要在需要的位置设置, ...
- Hibernate的多对一映射
一.创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql.Oracle.SqlServer等)的Jar包,创建 hibernate.cfg.xml 文件,并配置,配置项如下 ...
- SpringMVC的Hello World
本次使用Maven和Spring IO platform创建SpringMVC的Hello World. 一.Maven的Pom文件内容如下: <project xmlns="http ...