为PHP添加swoole异步并行扩展
1. 确认安装环境
- 仅支持Linux操作系统,核心代码兼容FreeBSD,需要调整某些编译的参数和细节才能通过
- Linux内核版本2.3.32以上
- PHP5.3.10以上版本
- gcc4.4以上版本。核心代码兼容clang,需要关闭CPU亲和设置特性
- cmake2.4+,编译为libswoole.so作为C/C++库时,需要使用cmake
2. 安装与配置
2. 1安装swoole:可pecl直接在线安装,或下载releases版本的swoole编译安装
2.11 pecl安装swoole扩展
pecl不可用的请确认php安装目录的bin目录已加入系统变量
1 | # pecl install swoole |
2.12编译安装swoole扩展
从此处下载:http://pecl.php.net/package/swoole
1 2 3 4 | # cd swoole # phpize # ./configure # make && make install |
2.2配置php.ini
phpinfo()确认Configuration File (php.ini) Path
添加:
1 | extension=swoole.so |
重启Apache查看php扩展库
1 2 | # service httpd restart # php -m |
确认swoole已添加
官方文档:http://wiki.swoole.com/wiki/index/prid-1
3.测试
server.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $serv = new swoole_server( "0.0.0.0" , 9501); $serv ->on( 'connect' , function ( $serv , $fd ){ echo "Client:Connect.\n" ; }); $serv ->on( 'receive' , function ( $serv , $fd , $from_id , $data ) { $serv ->send( $fd , 'Swoole: ' . $data ); }); $serv ->on( 'close' , function ( $serv , $fd ) { echo "Client: Close.\n" ; }); $serv ->start(); ?> |
client.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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 "Receive: $data\n" ; }); $client ->on( "error" , function ( $cli ){ echo "connect fail\n" ; }); $client ->on( "close" , function ( $cli ){ echo "close\n" ; }); $client ->connect( '127.0.0.1' , 9501, 0.5); ?> |
Test:
测试Server:
测试Client:
End.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)