PHP 服务端伪 Ajax 请求_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP 服务端伪 Ajax 请求

PHP 服务端伪 Ajax 请求

 2016/5/12 5:34:23  王之子  程序员俱乐部  我要评论(0)
  • 摘要:有时候,你可能有这样的需求,我们的A程序在处理客户端的请求时,想要以用户的身份给我们的B程序发送一个请求,但是又不想等待它的请求结果,有什么样的方法来解决这样的情景呢?这时候,我们必须以socket的方式来建立一个链接,然后把我们的请求数据以Get或者Post的方式传递过去,而无须等待它的响应结果。这个类似于Ajax请求,不会阻塞当前A程序的执行。下面就以Post方式的例子来讲解一下。<?php$tmp='';$cookie='';$postfield=array('title'=>
  • 标签:PHP 服务端 Ajax 服务

? ? 有时候,你可能有这样的需求,我们的A程序在处理客户端的请求时,想要以用户的身份给我们的B程序发送一个请求,但是又不想等待它的请求结果,有什么样的方法来解决这样的情景呢?

?

?这时候,我们必须以socket的方式来建立一个链接,然后把我们的请求数据以Get或者Post的方式传递过去,而无须等待它的响应结果。这个类似于Ajax请求,不会阻塞当前A程序的执行。



?

?

?

?

? 下面就以Post方式的例子来讲解一下。

?

class="php"><?php

$tmp = '';

$cookie = ''; 

$postfield = array ('title' => $title, 'type' => 'help', 'select_circle_id' => $item->circle_id, 'act' => 'addshare', 'artcle_comment' => $content );

$tmp = http_build_query($postfield);

foreach ( $_COOKIE as $key => $value ) {

//如果想以用户的身份给B程序发送请求,必须传递Cookie过去,这样才能获取Session

$cookie .= "$key=".urlencode($value)."; ";

}

//去掉末尾的;号

$cookie = substr($cookie,0,-1); 


//有一点必须明白,如果当前连接没有建立成功,程序会在这里阻塞的

$socket = fsockopen ( $_SERVER ['SERVER_NAME'], 80, $errno, $errstr, 30 ); 

//我们的B程序的URL地址

$request = "POST /personal/personal_center.php HTTP/1.1\r\n";

$request .= "Cookie: $cookie\r\n";//回车换行符必须在双引号里面

$request .= 'Host: ' . $_SERVER ['SERVER_NAME'] . "\r\n";

$request .= "Content-type: application/x-www-form-urlencoded\r\n";

$request .= "Content-length: " . strlen($tmp) . "\r\n";

$request .= "Accept: */*\r\n";

$request .= "Connection: Keep-Alive\r\n\r\n";//注意这里是2个回车换行符,标志着请求头的结束

$request .= "$tmp\r\n\r\n";//Post数据后也要有2个回车换行符 

fwrite ( $socket, $request );

fclose ( $socket );

//OK,我们已经向B程序成功发送了一个请求,B程序会执行给定的任务。但我们不必理会,继续执行当前A程序


//A程序的任务……


?>

?

原文链接:http://woqilin.blogspot.com/2012/05/blog-post_4234.html

?

个人主页:https://plus.google.com/+sherlockwang/posts

  • 大小: 9.2 KB
  • 查看图片附件
发表评论
用户名: 匿名