摘要:对于这一问题企业一般多会采用其他技术,比如使用或者其他语言。但是有了之后,由于底层全是用语言实现,其出色的性能深受追捧。由于以前适用场景的局限性比较大,所以会有说重新定义了的说法。到这里的环境已经搭建完成了。
Swoole 是一个 php 的扩展,它的核心目标就是解决 php 在实现一些高访问 server 服务中可能遇到的一系列问题,这些问题用原生的 php 往往并不能很方便高效的解决。
对于这一问题企业一般多会采用其他技术,比如使用 java 或者其他语言。 但是有了 Swoole 之后,由于底层全是用 C 语言实现,其出色的性能深受追捧。由于以前 php 适用场景的局限性比较大,所以会有说 Swoole 重新定义了 php的说法。
Swoole 简介:Swoole 是一个 php 的高性能的异步网络通信引擎,支持 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。
安装:这里我使用的是 ubuntu16.04 的系统,首先需要安装一下 Swoole 所依赖的编译环境,命令如下:
sudo apt-get install build-essential gcc g++ autoconf libiconv-hook-dev libmcrypt-dev libxml2-dev libmysqlclient-dev libcurl4-openssl-dev libjpeg8-dev libpng12-dev libfreetype6-dev
安装完这些之后就是 php 的安装了,这里选择 php7.2 版本。注意我们使用 Swoole 的话不需要安装 php-fpm。
sudo apt-get install software-properties-common python-software-properties sudo add-apt-repository ppa:ondrej/php && sudo apt-get update sudo apt-get -y install php7.2 sudo -y apt-get install php7.2-mysql php7.2-curl php7.2-json php7.2-mbstring php7.2-xml php7.2-intl php7.2-dev
以下拓展可以按需安装:
sudo apt-get install php7.2-gd sudo apt-get install php7.2-soap sudo apt-get install php7.2-gmp sudo apt-get install php7.2-odbc sudo apt-get install php7.2-pspell sudo apt-get install php7.2-bcmath sudo apt-get install php7.2-enchant sudo apt-get install php7.2-imap sudo apt-get install php7.2-ldap sudo apt-get install php7.2-opcache sudo apt-get install php7.2-readline sudo apt-get install php7.2-sqlite3 sudo apt-get install php7.2-xmlrpc sudo apt-get install php7.2-bz2 sudo apt-get install php7.2-interbase sudo apt-get install php7.2-pgsql sudo apt-get install php7.2-recode sudo apt-get install php7.2-sybase sudo apt-get install php7.2-xsl sudo apt-get install php7.2-cgi sudo apt-get install php7.2-dba sudo apt-get install php7.2-phpdbg sudo apt-get install php7.2-snmp sudo apt-get install php7.2-tidy sudo apt-get install php7.2-zip
安装完 php 之后,继续安装 Swoole 拓展。首先需要到以下地址下载源码包。
https://github.com/swoole/swo...
下载好之后解压,并且编译安装。
cd swoole-src-4.2.0/ phpize ./configure sudo make sudo make install
安装完成后,进入/etc/php目录下,打开php.ini文件,写入以下内容:
extension=swoole.so
操作完成之后输入php -m,看看 swoole 拓展有没有安装成功。
创建一个 server.php 文件,代码如下:
ip = $ip; $this->port = $port; } public function run() { // 创建 swoole_server 实例 $this->createSwooleServer(); $this->server->set(array( "worker_num" => 5, "daemonize" => false, )); $this->server->on("Start", array($this, "onStart")); $this->server->on("Connect", array($this, "onConnect")); $this->server->on("Receive", array($this, "onReceive")); $this->server->on("Close", array($this, "onClose")); $this->server->start(); } private function createSwooleServer() { $this->server = new swoole_server($this->ip, $this->port); } // 服务启动时触发 public function onStart( $serv ) { echo "Server Start "; } // 当有客户端连接时触发 public function onConnect( $serv, $fd, $from_id ) { echo "Client {$fd} connection "; } // 监听数据接收事件 public function onReceive( swoole_server $serv, $fd, $from_id, $data ) { echo "Get Message From Client {$fd}:{$data} "; } // 客户端关闭连接时触发 public function onClose( $serv, $fd, $from_id ) { echo "Client {$fd} close connection "; } } $server = new server("0.0.0.0", 8899); $server->run();
运行 php server.php, 可以看到 Server Start 成功输出。
服务端已经成功启动,那么接下来就要使用客户端去连接它。这里我就不去写客户端的代码了,直接使用 curl 来请求 8899 端口的服务。
如图:
解读:
根据我们的服务端程序,其中监听了客户端的连接事件,所以输出 Client 1 connection,接着监听了消息接收的事件,由于 Curl 默认发送的是 HTTP 请求,所以会看到把接收到的整个 HTTP 请求报文打印了出来。最后我们在客户端敲下 ctrl c,断开连接,最终看到客户端关闭的消息。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29495.html
摘要:安装命令环境下必须关闭选项需要修改关闭在下开发可以使用来方便的开发应用,安装好后再里的选项里共享代码所在磁盘。为源码所在路径为容器内路径在里执行编译安装扩展是按照标准扩展构建的。 环境依赖 仅支持 Linux、FreeBSD、MacOS 三种操作系统 在Windows平台,可使用CygWin或WSL(Windows Subsystem for Linux) Linux 内核版本 2....
摘要:前言是由韩天峰编写的一个扩展主打异步高并发常驻服务特性适用于等多种伺服器应用场景本系列文章主要介绍方向的应用本系列文章使用原生扩展实现操作数据库操作除外本系列文章将逐步更新预计前完成在完成更新前希望不要不带链接地转载给我一点修正错误的时间题 前言 Swoole 是由 韩天峰 编写的一个 PHP 扩展, 主打异步/高并发/常驻服务特性. 适用于 HTTP/TCP/UDP/WEBSOCK...
摘要:目录初探用启动一个内存的妙用终于可以啦初级应用实现用户注册登录撰写中展望的局限性分析及我个人的期待撰写中还记得我们第一个程序吗把他保存到访问就可以输出很多人就是这两行代码引入了的大门我们用来做一个看出了吧不依赖框架等机 目录 初探 Swoole -- 用 Swoole 启动一个 hello world 内存的妙用 -- PHP终于可以 vs JAVA啦 初级应用 -- 实现用户注册登...
阅读 3178·2021-11-23 09:51
阅读 3629·2021-09-22 15:35
阅读 3628·2021-09-22 10:02
阅读 2918·2021-08-30 09:49
阅读 478·2021-08-05 10:01
阅读 3355·2019-08-30 15:54
阅读 1610·2019-08-30 15:53
阅读 3531·2019-08-29 16:27