从0到1搭建TP5.1+Swoole3.5.15环境

2024-04-02 23:58
文章标签 15 搭建 环境 tp5.1 swoole3.5

本文主要是介绍从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环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871401

相关文章

Gradle下如何搭建SpringCloud分布式环境

《Gradle下如何搭建SpringCloud分布式环境》:本文主要介绍Gradle下如何搭建SpringCloud分布式环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Gradle下搭建SpringCloud分布式环境1.idea配置好gradle2.创建一个空的gr

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.