xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。
(1).创建xmlrpc服务端(求和函数api)
function getSum($method,$args,$extra)
{
return array_sum($args);
}
//创建RPC服务
$server = xmlrpc_server_create();
//注册RPC服务支持的函数
xmlrpc_server_register_method($server, 'getSum', 'getSum');
//获取客户端POST原始请求内容
//$request = $HTTP_RAW_POST_DATA;
$request = file_get_contents('php://input');
//执行调用客户端的XML请求获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($server, $request, null);
//定义XML的Header头部
header('content-type:text/xml');
//输出XML
echo $xmlrpc_response;
//销毁资源句柄
xmlrpc_server_destroy($server);(2).创建xmlrpc客户端调用
class RpcClient
{
/**
* RPC服务地址
* @var string
*/
protected $url;
public function __construct($url)
{
$this->url = $url;
}
protected function __query($request)
{
//创建请求上下文
$context = stream_context_create([
'http' => [
'method' => 'post',
'header' => 'content-type:text/xml',
'content' => $request
]
]);
//请求RPC服务器
$response = file_get_contents($this->url, false, $context);
if ($response != false)
{
$response = xmlrpc_decode($response);
}
return $response;
}
public function __call($name, $arguments)
{
$request = xmlrpc_encode_request($name, $arguments);
return $this->__query($request);
}
}
$url = 'http://learn.cn/server.php';
$client = new RpcClient($url);
$result = $client->getSum(2);
var_dump($result);提示:服务端创建完成后可以直接使用xmlrpc_encode_request生成xml进行post数据即可,这里只是对客户端请求封装了一下,另外服务器端的函数一定要标注3个参数,第一个参数一定是函数名,第二个参数是请求数组
<?php $base64_body = substr(strstr($_POST[base64],','),1); $data= base64_decode($base64_body); file_put_contents($_SERVER[&q...
首先下载wkhtmltox-0.12.4_linux-generic-amd64.tar.xz (不要下载RPM包,依赖太多,需要x-server支持),并解压,执行测试运行正常tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xzcd...
在项目中需要对图片进行裁剪,前端裁剪完成发送base64给后端,但是很意外的PHP获取到的数据和前端有点差距,之前我都是先加密,后端解密,但是这次依然不行。于是使用filter_input方法轻松解决。$base64 = filter_input(INPUT_POST...
(1).学习目标: 了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习: (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...
(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...
<?php $member = new class { public function getInfo() { ...