prc框架安装msgpack,yar扩展

官方网站;
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):

<?php
	class 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)

<?php
error_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)

<?php
error_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值