好长一段时间没写博文了,看了一下上次写的一篇博文时间是4月30号将近一个月了,经常关注我博客的网友应该灰心了,由于前一个月比较忙也没时间写博文,在此表示抱歉。
PHP socket编程应该是PHP中一种比较牛逼的技术。,最近几年的直播行业很火,比如:斗鱼、虎牙等等,它们网页上在线直播使用就是socket这种TCP协议的套接字。说道TCP应该给网友们讲讲http协议和TCP协议有什么区别,TCP协议是长连接的,HTTP协议是短连接的。通俗一点来讲就是基于HTTP协议的网页,要获取新的内容必须要重新刷新一下,而TCP协议不用。
PHP提供了php_sockets.dll(linux系统:php_sockets.so)这个扩展,能简单的实现socket的功能,比如在线聊天室等等,但是用PHP自带的socket扩展写出来的程序支持的并发量不大,这是为什么呢?因为php socket功能是基于nginx或者apache这些服务器的所以支持的并发量不大,本次我们不着重讲php扩展,但是附上用PHP扩展写的一个类以及使用方法,下载地址:
workerman是一个非常不错的PHP socket服务框架,可支持数百万以上TCP长连接,同时支持TCP/UDP协议,但是我个人认为workerman在用的时候非常麻烦,也不是本次要讲的着重点,示例代码可以参考workerman官网上的,workerman官网上有很多workerman框架开发的实例,附上地址http://www.workerman.net/.
PHP swoole扩展是一个高性能异步、并行的网络通信引擎,使用纯C语言编写,可大程度提高程序执行效率,更多的介绍可以到swoole官网上查看,本次的重点就是这么利用swoole扩展做一个多人聊天和私聊这样的聊天室。
首先配置环境:
1,确保服务器上已经安装了PHP环境,然后进入shell。
2,wget https://codeload.github.com/swoole/swoole-src/zip/swoole-1.8.5-stable
3,unzip swoole-src-swoole-1.8.5-stable.zip
4,cd swoole-src-swoole-1.8.5-stable
5 ,phpize
6, ./configure --with-php-config=/usr/local/php/bin/php-config
这里的/usr/local/php/bin/php-config修改为你的php-conf实例目录
7,make && make install
8,正确编译安装完后会输出这个swoole.so的地址,比如我的是/usr/lib/php/modules/swoole.so,那就在php.ini文件中加入一句extension=/usr/lib/php/modules/swoole.so,然后重启服务器,重启完后执行php -m查看扩展是否安装好
安装完环境后就是进入开发环节了,由于代码量比较多,就不贴出来了,也不一一详解,可以下载源码研究,里面注释的很清楚
下载地址:
里面有几个文件详细说明一下作用,start.php是开启socket服务的,index.html是websocket的前端界面,bootstrap.min.css是index.html的css样式,data目录是存放每个房间的聊天记录,默认保存120条,client保存每个房间的用户会话id的,include是存放start.php要用的类库文件。
注意一点:这三个实现php socket方法都必须要在PHPCLI模式下运行,通俗讲就是终端运行。
最后附上一张部分·示例代码图片
Comments : 0