pecl install swoole

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

关于Swoole环境依赖和对PHP版本的要求,请参照Swoole的官方文档

http://wiki.swoole.com/wiki/page/7.html

安装

swoole项目已收录到PHP官方扩展库,我们可以通过PHP官方提供的pecl命令,一键下载安装swoole

pecl install swoole

注:需要先装php-pear

如果安装完出现如下提示

Installing '/usr/lib/php/modules/swoole.so'
install ok: channel://pecl.php.net/swoole-1.9.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini

则需要我们手动在php.ini文件中添加

extension=swoole.so

创建TCP服务器

server.php

<?php
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501); //监听连接进入事件
$serv->on('connect', function ($serv, $fd) {
echo "Client: Connect.\n";
}); //监听数据发送事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, "Server: ". $fd.'-----' . $data);
}); //监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
}); //启动服务器
$serv->start();

这里就创建了一个TCP服务器,监听本机9501端口。它的逻辑很简单,当客户端Socket通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。

swoole_server是异步服务器,所以是通过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的PHP函数。如当有新的TCP连接进入时会执行onConnect事件回调,当某个连接向服务器发送数据时会回调onReceive函数。

  • 服务器可以同时被成千上万个客户端连接,$fd就是客户端连接的唯一标识符
  • 调用$server->send()方法向客户端连接发送数据,参数就是$fd客户端标识符
  • 调用 $server->close()方法可以强制关闭某个客户端连接客户端可能会主动断开连接,此时会触发onClose事件回调

执行程序

php server.php

可以在命令行模式下输入

[root@VM_114_93_centos ~]# netstat -tunpl | grep 9501
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 15387/php

看到,已经在监听9501端口

这时我们就可以用telnet命令来连接服务器了。

如果想要远程连接该服务器,只需将server.php中的IP地址改为0.0.0.0即可。

【Swoole】简单安装与创建TCP服务器的更多相关文章

  1. swoole 创建tcp服务器

    server.php <?php /** * 创建tcp服务器 * Date: 2019/1/15 */ $serv = new swoole_server('127.0.0.1', 9501) ...

  2. 使用nodejs的net模块创建TCP服务器

    使用nodejs的net模块创建TCP服务器 laiqun@msn.cn Contents 1. 代码实现 2. 使用telnet连接服务器测试 3. 创建一个TCP的client 1. 代码实现 ; ...

  3. 创建TCP服务器和TCP客户端

    import sockethost='127.0.0.1'port=8080web=socket.socket()web.bind((host,port))web.listen(5)# 设置最多连接数 ...

  4. 使用net模块创建tcp服务器

    demo /** * Created by ZXW on 2018/4/6. */ var net=require('net'); ; const HOST='localhost'; var clie ...

  5. Swoole学习(七)Swoole之异步TCP服务器的创建

    环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...

  6. Swoole学习(二)Swoole之TCP服务器的创建

    环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...

  7. swoole创建websocket服务器

    目录 1 安装准备 1.1 安装swoole前必须保证系统已经安装了下列软件 1.2 下载并解压 1.3 编译安装成功后,修改php.ini 2 构建Swoole基本实例 2.1 tcp服务器实例 2 ...

  8. 06.swoole学习笔记--异步tcp服务器

    <?php //创建tcp服务器 $host='0.0.0.0'; $port=; $serv=new swoole_server($host,$port); //设置异步进程工作数 $serv ...

  9. 【卷二】网络二—TCP服务器与客户端

    经过上回简单地介绍,大家对服务器多少应该清楚一些了吧!还记得TCP: (Transmission Control Protocol) 传输控制协议? 还记得IP: (Internet Protocol ...

随机推荐

  1. h5-localStorage实现缓存ajax请求数据

    使用背景:要实现每次鼠标hover“能力雷达”,则显示能力雷达图(通过ajax请求数据实现雷达图数据显示),所以每次hover都去请求ajax会影响性能,因此这里要用到本地缓存. 实现: 此处是通过传 ...

  2. MySQL中数据中设计中的范式与反范式

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写 ...

  3. SaltStack远程执行命令

    编辑fansik_cmd.sls文件: 内容如下: fansik_cmd:  cmd.run:    - unless:      - test -f /tmp/fansik.txt      - t ...

  4. List contents of directories in a tree-like format

    Python programming practice. Usage: List contents of directories in a tree-like format. #!/usr/bin/p ...

  5. junit在idea中的使用(2)--实践篇

    目录:(1)普通java项目(2)在web项目中 (1)普通java项目 直接在代码中写上 @Before @Test即可,想执行main方法,直接右击main,选择run as import org ...

  6. flex for循环

    //for ..in 循环中的迭代变量包含属性所保存的值和名称 //for each..in 循环中的迭代变量只包含属性所保存的值,而不包含属性的名称 //对象遍历,可以获取属性名称 private ...

  7. String和StringBufffer的区别

    string的字符串操作都是废弃已有的对象,开辟一个新的内存空间创建一个新的对象 比如一个string str= "字符串"; str += "a"; 这样的操 ...

  8. 机器学习相关知识整理系列之三:Boosting算法原理,GBDT&XGBoost

    1. Boosting算法基本思路 提升方法思路:对于一个复杂的问题,将多个专家的判断进行适当的综合所得出的判断,要比任何一个专家单独判断好.每一步产生一个弱预测模型(如决策树),并加权累加到总模型中 ...

  9. python爬虫之html解析Beautifulsoup和Xpath

    Beautiifulsoup Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.BeautifulSoup 用来解析 HTML 比较简 ...

  10. OC_id类型

     博客正式开通啦!以后会每天为大家更新知识,将过去学习的笔记发布出来.供大家学习交流. 在Objective-C 中,id 类型是一个独特的数据类型.在概念上,类似Java 的Object 类,可以转 ...