php 数据分流,php实现请求分流 - osc_6fvwlc7h的个人空间 - OSCHINA - 中文开源技术交流社区...
一个请求,同时分发到多个服务器,正常的是: A ============> B现在想实现的是:--------------> CA ======> B ---------------> D---------------> E如果是 GET请求,就处理一下 URL请求即可,但 POST 请求,还需要处理数据,处理数据:如果是键值对方式的,使用 $_REQUE...
一个请求,同时分发到多个服务器,
正常的是: A ============> B
现在想实现的是:
--------------> C
A ======> B ---------------> D
---------------> E
如果是 GET请求,就处理一下 URL请求即可,但 POST 请求,还需要处理数据,
处理数据:
如果是键值对方式的,使用 $_REQUEST 获取整个键值对;
$post_data = $_REQUEST; //则会获取 整个请求中的键值对,返回结果为数组;
如果是以流的方式的,则使用:
$post_data = file_get_contents("php://input");
获取完数据后,就用代码来进行转发,需要使用 curl:
** 如果需要根据进来的 url进行判断,可以使用 $_SERVER['REQUEST_URI']; // 获取的是 url中,domain后的部分,如: https://www.google.com/abc.php ==> /abc.php
* 发送post请求,而且data是键值对形式*/
function send_post($url, $post_data) {$postdata = http_build_query($post_data);$options = array('http' => array('method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 15 * 60)
);$context = stream_context_create($options);$result = file_get_contents($url, false, $context);return $result;
}/**
* 发送post请求,而且data是流的形式*/
function send_post_content($url, $postdata) {$options = array('http' => array('method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 15 * 60)
);$context = stream_context_create($options);$result = file_get_contents($url, false, $context);return $result;
}//转发键值对请求
if (isset($_REQUEST) && !empty($_REQUEST)) {$url1 = "http://test1.php";$url2 = "http://test2.php";$request = $_REQUEST;echo send_post($url1, $request);/*echo*/ send_post($url2, $request);
}else{//转发流请求
$url3 = "http://test3.php";$url4 = "http://test4.php";$request = file_get_contents("php://input"); //$_REQUEST;
echo send_post_content($url1, $request);/*echo*/ send_post_content($url2, $request);
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)