`
王之子
  • 浏览: 105597 次
  • 性别: 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数据

    NULL 博文链接:https://1017401036.iteye.com/blog/2301854

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

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

    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

    php下的原生ajax请求用法实例分析

    本文实例讲述了php下的原生ajax请求用法。分享给大家供大家参考,具体如下: 浏览器中为我们提供了一个JS对象XMLHttpRequet,它可以帮助我们发送HTTP请求,并接受服务端的响应。 意味着我们的浏览器不提交,通过JS就...

    PHP利用AJAX实现SOCKET通讯

    PHP利用AJAX技术实现SOCKET通讯,并将返回结果显示在界面。

    DataTables自行封装请求参数和返回数据的零耦合服务端分页示例(PHP&JAVA)

    使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前端或其他业务交互的项目。本例子主要展示了自行封装请求...

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

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

    php+ajax+jquery实现点击加载更多内容

    基本原理:页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求参数,并作出相应,...

    jQuery+PHP+ajax实现微博加载更多内容列表功能

    Ajax加载的基本原理:当页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“查看更多”的链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求...

    php+jquery+html实现点击不刷新加载更多的实例代码

    基本原理:页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求参数,并作出相应,...

    ASP加载更多功能 1.0.rar

    原理:页面载入时,jQuery向后台请求数据,ASP程序通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台ASP程序接收请求参数,并作出相应,...

    ASP列表“加载更多”功能 v1.0.rar

    原理:页面载入时,jQuery向后台请求数据,ASP程序通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台ASP程序接收请求参数,并作出相应,...

    Ajax添加数据即时显示信息篇

    今天我们要学习的内容是:使用ajax向服务端的数据库添加数据,然后在网页不刷新情况下即时显示被添加的数据.需要说明的是.本次ajax实例教程与前3篇有2点大不同之处. 1:我们要对数据库进行操作.2:更换请求的...

    解决ajax跨域请求数据cookie丢失问题

    本文主要是从前端jquery和服务端php为例,分别使用实例解决ajax跨域请求数据cookie丢失问题,推荐给有相同需求的小伙伴们。

    PHP+原生态ajax实现的省市联动功能详解

    本文实例讲述了PHP+原生态ajax实现的省市联动功能。分享给大家供大家参考,具体如下: Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,...

    jquery-1.1.3 效率提高800%

    或者,你也可以指定jsonp的数据类型的回调函数,此函数会自动添加到Ajax请求中。 参数选项: async(true) 数据类型: Boolean 默认情况下,所有的请求都是异步发送的(默认为true)。 如果需要发送同步请求,...

    基于JavaScript+css+php支持断点续传的文件上传插件.zip

    为满足最大的灵活性,保存已上传文件大小和获取已上传文件大小的函数将由你来定义,你可以使用localStorage保存在本地,或者发送ajax请求保存在服务器上。 #####已实现的特性有: 多文件上传 显示进度条 显示已...

    vue结合axios与后端进行ajax交互的方法

    以前vue官方推荐的ajax库是vue-resource, 现在改为axios axios的github仓库 实现的效果: 异步请求 页面异步发出get请求获取数据,提交表单异步post数据到服务端 客户端 客户端代码 代码解析: // 服务端请求...

Global site tag (gtag.js) - Google Analytics