docker环境,安装Swoole,无需修改php.ini文件
1.首先进入容器内,执行命令,下载swoole,并把文件复制到php/ext下
wget https://pecl.php.net/get/swoole-4.6.6.tgz
tar -xzvf swoole-4.6.6.tgz
cp -r swoole-4.6.6 /usr/src/php/ext/swoole
2.安装swoole扩展
docker-php-ext-install swoole
3.安装完毕后
php -m //查看扩展
或者
php --ri swoole //查看扩展信息
安装成功后,不用再去php.ini再去添加extension=swoole.so;
安装 laraveltw/laravel-swoole
1.在项目根目录下使用composer require swooletw/laravel-swoole -vvv
安装;
如果提示Your requirements could not be resolved to an installable set of packages
,则代表PHP版本不符合当前要求版本
命令可修改为composer require swooletw/laravel--ignore-platform-reqs
2.安装完毕后,查看composer.json文件
出现如图所示,则代表安装成功
3.创建 swoole 命令 执行
php artisan make:command Swoole
会在 app\Console\Command\ 目录下生成 Swoole 文件
4.根目录下执行 php artisan swoole start
就会开启一个长起进程
前端请求示例代码
<!doctype html>
<html>
<head>
<title>WebSocket</title>
</head>
<div id="WebSocket"></div>
<body>
<script>
var ws = new WebSocket("ws://test.in:9502");
ws.onopen = function(event) {
console.log("success");
ws.send("hello world!"); //客户端给服务端推送消息
};
ws.onmessage = function(event) {
var parent = document.getElementById('WebSocket');
var div = document.createElement("div");
div.innerHTML = event.data
parent.appendChild(div);
console.log("服务器传过来的数据是:" + event.data);
}
ws.onclose = function(event) {
console.log("连接已关闭");
};
</script>
</body>
注意事项
1.如果出现类似错误提示,显示端口被占用
PHP Fatal error: Uncaught Swoole\Exception:
failed to listen server port[0.0.0.0:9501],
Error: Address al
执行
查看端口:netstat -anp | grep 9501
杀掉端口
kill -9 29854
29854 就是我图中的
2.修改文件内容时,记得重启一下swoole启动文件