prc框架安装msgpack,yar扩展

来源:互联网 发布:好用 陶瓷 餐具 知乎 编辑:程序博客网 时间:2024/06/05 18:20
官方网站;
http://pecl.php.net/package/msgpack

http://pecl.php.net/package/yar


1.安装msgpack,msgpack是一个高效的二进制打包协议.prc的客户端和服务器都需要用到此扩展.


(1).sudo yum install php-pecl-msgpack-devel.x86_64
(2).修改php.ini,添加 extension=msgpack.so
(3).重启 sudo service php-fpm restart


2.安装yar扩展,yar是鸟哥(laruence)开发的一个并行的RPC框架


(1). sudo pecl install yar
(2).修改php.ini,添加 extension=yar.so
(3).重启 sudo service php-fpm restart


出错:
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
解决:yum -y install curl-devel


安装成功之后就可以进行测试了。

服务端的代码如下(testyars.php):

<?phpclass Operator {/** * Add two operands * @param interge * @return interge */public function add($a, $b) {return $this->_add($a, $b);}/** * Sub */public function sub($a, $b) {return $a - $b;}/** * Mul */public function mul($a, $b) {return $a * $b;}/** * Protected methods will not be exposed * @param interge * @return interge */public function _add($a, $b) {return $a + $b;}}error_reporting(E_ALL);ini_set('display_errors', 'on');$server = new Yar_Server(new Operator());$server->handle();?>

客户端的代码如下:

(1).同步操作(testyarc.php)

<?phperror_reporting(E_ALL);ini_set('display_errors', 'on');$client = new yar_client("http://www.test.com/testyars.php");/* call directly */var_dump($client->add(1, 2));/* call via call */var_dump($client->call("add", array(3, 2)));/* __add can not be called */var_dump($client->_add(1, 2));?>

(2)。异步操作(testyarc2.php)

<?phperror_reporting(E_ALL);ini_set('display_errors', 'on');function callback($ret, $callinfo) {    echo $callinfo['method'] , " result: ", $ret , "\n";    return 0;}/* 注册一个异步调用 */Yar_Concurrent_Client::call("http://127.0.0.1:8080/testyars.php", "add", array(1, 2), "callback");Yar_Concurrent_Client::call("http://127.0.0.1:8080/testyars.php", "sub", array(2, 1), "callback");Yar_Concurrent_Client::call("http://127.0.0.1:8080/testyars.php", "mul", array(2, 2), "callback");/* 发送所有注册的调用, 等待返回, 返回后Yar会调用callback回掉函数 */Yar_Concurrent_Client::loop();?>

注:异步的时候,请求的url必须是ip+端口号.

参考文章

http://blog.csdn.net/diandianxiyu_geek/article/details/17119341

http://www.360doc.com/content/14/0528/22/11482448_381859903.shtml

http://blog.sina.com.cn/s/blog_6bb942f70101hven.html

http://blog.csdn.net/diandianxiyu_geek/article/details/17145857

0 0
原创粉丝点击