`
王之子
  • 浏览: 109860 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PHP 服务端伪 Ajax 请求

阅读更多

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

 

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



 

 

 

 

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

 

<?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
分享到:
评论

相关推荐

    使用Ajax向PHP服务端发送请求并返回JSON数据

    以下是一个基本的Ajax请求示例: ```javascript // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 设置回调函数处理响应 xhr.onreadystatechange = function() { if (xhr.readyState === ...

    服务端配置实现AJAX跨域请求

    一直以为AJAX跨域是无法逾越的鸿沟,最近发现原来在服务端可以通过发送header信息来允许AJAX跨域请求。 PHP代码示例: 代码如下: header(‘Access-Control-Allow-Origin:*’); header(‘Access-Control-Allow-...

    PHP利用AJAX实现SOCKET通讯

    在JavaScript中,使用XMLHttpRequest对象发送AJAX请求。首先创建一个对象实例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://localhost/socket_server.php', true); ``` #### 3.2 ...

    jQuery-ajax示例含客户端和服务端源码(可运行

    客户端的jQuery代码可能包含AJAX请求的触发事件,如按钮点击,以及`$.ajax()`调用,设置URL、请求类型和数据格式。 **6. 服务端源码解析** 服务器端源码通常会处理来自客户端的请求,读取请求参数,执行相应操作,...

    jQuery通过Ajax向PHP服务端发送请求并返回JSON数据

    JSON(JavaScript Object ...本文将通过实例演示了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据。阅读本文的读者应该具备jQuery、Ajax、PHP相关知识,并能熟练运用。 XHTML &lt;li&gt;&lt;a&gt;张三&lt;/a&gt;&lt;/li&gt; &lt;li

    Ajax跨域请求COOKIE无法带上的完美解决办法

    在互联网应用中,当用户需要从一个域名(域A)的Web页面发起一个Ajax请求到另一个不同域(域B)的服务器时,就会发生跨域请求。出于安全考虑,浏览器同源策略默认禁止这种跨域Ajax请求携带cookies,这种限制会阻止一...

    在Web关闭页面时发送Ajax请求的实现方法

    在Web开发中,有时我们想要在用户关闭页面的时候执行一些操作,比如发送一个Ajax请求到服务器进行数据上报或者完成某些清理工作。为了实现这个功能,我们可以利用浏览器提供的事件监听机制,特别是`beforeunload`和`...

    php ajax 实现局部刷新简单例子(超简单化)

    外部JavaScript文件`fun.js`中定义了`historyLotteryCode_1()`函数,该函数利用jQuery库发起一个AJAX请求。请求类型为POST,目标URL是`ajaxReturn.php`,并传递了一个名为`userid`的数据参数。 当服务器响应返回后...

    jQuery取消ajax请求的方法

    然而,有时我们需要在发送Ajax请求后取消它,比如用户在请求处理完成前执行了其他操作。本文将深入探讨如何在jQuery中使用xhr对象的`.abort()`方法来取消Ajax请求。 首先,jQuery的$.ajax()函数是创建Ajax请求的...

    ajax php js 做的一个不错的地图小例子

    在这个例子中,JavaScript主要负责监听用户的行为(如鼠标悬停和点击),并通过Ajax调用PHP服务端接口,改变地图的颜色,显示相关信息。 具体到这个“地图小例子”,我们可以推测其工作流程如下: - 当用户将鼠标...

    ibm的ajax教程

    2. **使用PHP处理Ajax请求**:提供一个完整的 PHP 脚本示例,演示如何解析 Ajax 请求发送的数据,并返回相应的结果。 3. **使用JSP处理Ajax请求**:类似地,也会有 JSP 示例代码,说明如何利用 JSP 处理 Ajax 请求...

    php ajax 域名查询-domainsearch.rar

    4. **服务器接口**:PHP编写的服务端接口应具有接收AJAX请求、解析请求参数、执行查询操作、处理查询结果、封装成JSON或XML格式并返回给前端的功能。 5. **数据库交互**:虽然描述中未明确提及,但若系统需要记录...

    jq+ajax+php粗略实现了网页中评论功能

    3. PHP:PHP是一种服务端脚本语言,常用于Web开发,可以处理来自客户端(如Ajax请求)的数据。在这个项目中,PHP脚本接收并验证Ajax发送的评论数据,可能包括防止SQL注入的安全检查。验证成功后,PHP将评论数据存储...

    php-sse:一个简单高效的库通过PHP实现HTML5的服务器发送的事件,用于将事件从服务器实时推送到客户端,比Websocket更容易,而不是AJAX请求

    一个简单高效的库通过PHP实现了HTML5的服务器发送的事件,用于将事件从服务器实时推送到客户端,并且比Websocket更容易,而不是AJAX请求。 要求 PHP 5.4或更高版本 通过Composer( )安装 composer require " hhxsv5...

    省市联动php mysql ajax

    4. AJAX请求:发送请求到PHP服务端,获取数据。 5. 数据处理:前端接收到数据后,解析JSON,动态更新市、县(区)的下拉菜单选项。 6. 测试和优化:确保在不同浏览器和设备上功能正常,优化加载速度和用户体验。 在...

    Ajax 缓存问题,Ajax 缓存问题

    2. **设置HTTP头信息**:在发起Ajax请求之前,可以通过JavaScript设置XMLHttpRequest对象的HTTP头信息,告诉浏览器不要缓存该请求。可以设置`"If-Modified-Since"`为`"0"`或`"Cache-Control"`为`"no-cache"`,如下:...

    Ajax20180427.pdf

    服务器端通常使用像PHP这样的服务器端脚本语言来处理AJAX请求。在上面的PHP示例代码中,演示了如何通过$_GET全局数组接收客户端发送的数据,并进行简单的逻辑处理。然后根据处理结果,输出对应的响应。在这个例子中...

Global site tag (gtag.js) - Google Analytics