用PHP搭建基于swoole扩展的socket服务(附PHP扩展的安装步骤)

最近公司的一项目中,需要用PHP搭建一个socket服务。

本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信。经过多次尝试,最终选择了开源的PHP扩展:swoole,是用C写的多线程异步Server。

swoole官网:http://www.swoole.com/http://wiki.swoole.com/wiki/index/prid-1

swoole入门教程及文档:https://github.com/LinkedDestiny/swoole-doc

其中二进制数据通信使用php自带的pack()和unpack()函数。需要注意的是,使用pack()打包字母时,需要传入其相应的ASCII码值。

附一段关闭该socket服务的shell脚本(当代码有更新,socket服务需要重启时会用到):

#!/bin/sh
echo "start kill socket..."
PID=`netstat -anp|grep 10001|awk {printf $7}|cut -d/ -f1`
echo "pid: $PID"
kill -50 "$PID"
echo "Killed pid 10001"  #假定此socket服务的端口为10001
kill -USR1 
shell 在线手册:
linux 在线手册:
 
PS:PHP扩展的安装步骤(http://coolerfeng.blog.51cto.com/133059/98460/):
1 首先进入要安装的扩展的源码目录 
cd /tmp/phpext/swoole
2 在swoole文件夹下产生configure文件 
#/usr/local/php5/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
出现这样的提示说明可以扩展。
3 配置编译和安装
#./configure --with-php-config=/usr/local/php5/bin/php-config 
#make
#make install
4 在/opt/php/lib/php/extensions下产生一个swoole.so文件 
5 编辑php.ini(如果php安装在/usr/local/php5 则php.ini在/usr/local/php5/lib/php.ini中添加
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "swoole.so"
6 重启apache,然后通过php -m或phpinfo()来查看是否成功加载了swoole扩展。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。