本文主要是介绍从0到1搭建TP5.1+Swoole3.5.15环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:https://www.phpmianshi.com/?id=190
安装
首先按照Swoole官网说明安装swoole扩展,推荐新手可以直接使用
pecl install swoole
#会安装最新的稳定版(截至本文发布最新版本是4.0.3版本)
或者源码安装:
git clone https://github.com/swoole/swoole-src.git && \
cd swoole-src && \
phpize && \
./configure && \
make && sudo make install
常见问题
问题一:
安装时提示gcc版本过低,可以安装最新的gcc,我安装了4.8.2的
问题二:
这时候安装还是报错,提示gcc版本过低,这时候我注释了 swoole_config.h中关于gcc的检测
问题三:
安装完成后,重启php-fpm发现报错:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
发现确实没有:GLIBCXX_3.4.18
ll /usr/lib64/libstdc++.so.6
发现连接的确实是个老版本:/usr/lib64/libstdc++.so.6.0.13
找一下最新安装的:find / -name libstdc++.so.6*
我们发现,gcc安装时把/libstdc++.so.6.0.18 安装到了/usr/local/lib64/libstdc++.so.6.0.18下,但并没有改变libstdc++.so.6的链接指向。
那么我们手动来更新软连接
cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
发现有:GLIBCXX_3.4.18了 再次重新启动,完成
安装完成后,你可能需要在你的php.ini中添加:
extension=swoole.so
因为我是 php5.6的版本,最新的swoole需要php7以上,只能先按照1.x版本了
进入oneinstack安装目录执行下面命令,有当前php版本的swoole安装选项:
./addons.sh
再执行下面:
composer require topthink/think-swoole
配置文件:config/swoole_server.php
启动:
可以支持直接启动一个Swoole server(需要2.0.9+版本)
php think swoole:server
配置文件:config/swoole_server.php
示例
使用自定义的服务类
namespace app\push;use think\swoole\Server;class Swoole extends Server
{protected $host = '127.0.0.1';protected $port = 9502;protected $option = ['worker_num' => 4,'daemonize' => true,'backlog' => 128];public function onReceive($server, $fd, $from_id, $data){$server->send($fd, 'Swoole: ' . $data);}
}
在swoole_server.php中增加配置参数
'swoole_class' => 'app\push\Swoole', // 自定义服务类名称
定义该参数后,其它配置参数均不再有效。
客户端测试代码:
<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>socket test</title><script>function msg(txt){var para=document.createElement("p");var node=document.createTextNode(txt);para.appendChild(node);var element=document.getElementById("div");element.appendChild(para);}// 打开一个 web socketvar ws = new WebSocket("ws://123.207.9.205:20000");var div = document.getElementById("div");ws.onopen = function(){// Web Socket 已连接上,使用 send() 方法发送数据ws.send("send msg");msg("send msg");};ws.onmessage = function (evt){var received_msg = evt.data;msg("rev "+received_msg);};ws.onclose = function(){// 关闭 websocketmsg("close ");};</script></head><body><div id="div"></div></body></html>
参考文档:
1.https://www.kancloud.cn/manual/thinkphp5_1/675277
2.https://www.swoole.com/
这篇关于从0到1搭建TP5.1+Swoole3.5.15环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!