前言
体验RPC框架Yar
需要三步
装二进制打包协议msgpack
装yar拓展和依赖
写demo测试
我们今天先解决安装问题
步骤
-
安装PHP拓展包有很多种方式,当然没什么是比
pecl
更加来得暴力,用这个之前要确认phpize是否存在find / -name phpize
-
如果phpize不存在
yum install php-devel
-
Ok,先装msgpack
pecl install msgpack
提示如下错误:`
Failed to download pecl/msgpack within preferred state "stable", latest release is version 0.5.6, stability "beta", use "channel://pecl.php.net/msgpack-0.5.7" to install
那么就按照提示
pecl install channel://pecl.php.net/msgpack-0.5.7
安装跳了一大堆编译过程过程,省略ING
只关心后几行
Build process completed successfully
Installing '/usr/include/php/ext/msgpack/php_msgpack.h'
Installing '/usr/lib64/php/modules/msgpack.so'
install ok: channel://pecl.php.net/msgpack-0.5.6
configuration option "php_ini" is not set to php.ini location
You should add "extension=msgpack.so" to php.ini
vi /etc/php.ini
extension=msgpack.so
保存退出。
OK,msgpack装好了,接着
pecl install yar
中途会有提示你Enable Msgpack Supports
这个就上个装的二进制打包协议。输入yes-
很不幸,出现了
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/ ERROR: `/var/tmp/yar/configure --enable-msgpack=yes' failed`
这边输入如下命令
yum -y install curl-devel
解决上处报错问题。
pecl install yar
,vi /etc/php.ini
文件添加extension=yar.so
重启php-fpm
service php-fpm restart
-
重启的时候报错如下
NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/yar.so' - /usr/lib64/php/modules/yar.so: undefined symbol: php_json_encode in Unknown on line 0
可以看出问题了,yar模块是依赖msgpack.so和json.so的,必须得保证msgpack.so和json.so放在yar.so前面
-
解决办法如下:
find / -name json.ini mv /etc/php.d/json.ini /etc/php.d/json.ini.bak vi /etc/php.ini` 文件添加`extension=json.so
service php-fpm restart
再次重启,成功!-
index.php phpinfo()查看模块是否已被添加
12. OK Let's try it
总结:安装的时候最麻烦就是各种依赖,我们要做的就是看Linux给的提示,解决依赖问题。
后续:RPC的意义和Yar的使用。