[视频教程] 最新版swoole安装和TASKS功能测试
今天我们来安装和测试一下php的多并发高性能网络通信扩展,这个扩展是使用C语音开发的,加载到PHP以后,在PHP的层面上实现了多并发异步通信,模拟了go语音的很多特性,极大的拓宽了PHP的应用场景。
直接使用官网上的那句命令就可以,安装swoole时可能会出现错误和卡住不动,多试几次就能成功。
pecl install swoole
要配置php的cli环境和fpm环境的ini文件,把扩展的so加载进去。
视频地址:
https://www.bilibili.com/video/av70354024/
httpServer.php
$http = new swoole_http_server("127.0.0.1", 9501); $http->on("start", function ($server) { echo "Swoole http server is started at http://127.0.0.1:9501\n"; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World\n"); }); $http->start();
注意使用httpClient的时候会有一些错误,首先新版的swoole移除了Swoole\Http\Client,会报类找不到,其次要在协程中执行get方法
httpClient.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client ->on( "connect" , function ( $cli ) { $cli ->send( "hello world\n" ); }); $client ->on( "receive" , function ( $cli , $data ){ echo "received: {$data}\n" ; }); $client ->on( "error" , function ( $cli ){ echo "connect failed\n" ; }); $client ->on( "close" , function ( $cli ){ echo "connection close\n" ; }); $client ->connect( "127.0.0.1" , 9502, 0.5); |
taskServer.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?php $serv = new Swoole\Server( "127.0.0.1" , 9502, SWOOLE_BASE); $serv ->set( array ( 'worker_num' => 2, 'task_worker_num' => 4, )); $serv ->on( 'Receive' , function (Swoole\Server $serv , $fd , $from_id , $data ) { echo "接收数据" . $data . "\n" ; $data = trim( $data ); $task_id = $serv ->task( $data , 0); $serv ->send( $fd , "分发任务,任务id为$task_id\n" ); }); $serv ->on( 'Task' , function (Swoole\Server $serv , $task_id , $from_id , $data ) { echo "Tasker进程接收到数据" ; echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=" . strlen ( $data ). "." .PHP_EOL; $serv ->finish( $data ); }); $serv ->on( 'Finish' , function (Swoole\Server $serv , $task_id , $data ) { echo "Task#$task_id finished, data_len=" . strlen ( $data ).PHP_EOL; }); $serv ->on( 'workerStart' , function ( $serv , $worker_id ) { global $argv ; if ( $worker_id >= $serv ->setting[ 'worker_num' ]) { swoole_set_process_name( "php {$argv[0]}: task_worker" ); } else { swoole_set_process_name( "php {$argv[0]}: worker" ); } }); $serv ->start(); |
taskClient.php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on("connect", function($cli) { $cli->send("hello world\n"); }); $client->on("receive", function($cli, $data){ echo "received: {$data}\n"; }); $client->on("error", function($cli){ echo "connect failed\n"; }); $client->on("close", function($cli){ echo "connection close\n"; }); $client->connect("127.0.0.1", 9502, 0.5);
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网
标签:
PHP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具