重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
页面1.php里面写具体的执行语句
创新互联主要从事做网站、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务克拉玛依,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
页面2.php直接使用curl调用页面1.php 并设置超时时间;根据你自己的需求写但是你不一定如果超时时间内 数据库没执行玩 那你可能就获取不到插入结果了
访问2.php应该就是你说的异步了
使用Ajax 与 img 标记
原理,服务器返回的html中插入Ajax 代码或 img 标记,img的src为需要执行的程序。
优点:实现简单,服务端无需执行任何调用
缺点:在执行期间,浏览器会一直处于loading状态,因此这种方法并不算真正的异步调用。
$.get("doRequest.php", { name: "fdipzone"} );
img src="doRequest.php?name=fdipzone"
使用popen
使用popen执行命令,语法:
优点:执行速度快
缺点:
1).只能在本机执行
2).不能传递大量参数
3).访问量高时会创建很多进程
// popen — 打开进程文件指针
resource popen ( string $command , string $mode )
pclose(popen('php /home/fdipzone/doRequest.php ', 'r'));
使用curl
设置curl的超时时间 CURLOPT_TIMEOUT 为1 (最小为1),因此客户端需要等待1秒
?php
$ch = curl_init();
$curl_opt = array(
CURLOPT_URL, ''
CURLOPT_RETURNTRANSFER,1,
CURLOPT_TIMEOUT,1
);
curl_setopt_array($ch, $curl_opt);
curl_exec($ch);
curl_close($ch);
?
使用fsockopen
fsockopen是最好的,缺点是需要自己拼接header部分。
?php
$url = '';
$param = array(
'name'='fdipzone',
'gender'='male',
'age'=30
);
doRequest($url, $param);
function doRequest($url, $param=array()){
$urlinfo = parse_url($url);
$host = $urlinfo['host'];
$path = $urlinfo['path'];
$query = isset($param)? http_build_query($param) : '';
$port = 80;
$errno = 0;
$errstr = '';
$timeout = 10;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
$out = "POST ".$path." HTTP/1.1\r\n";
$out .= "host:".$host."\r\n";
$out .= "content-length:".strlen($query)."\r\n";
$out .= "content-type:application/x-www-form-urlencoded\r\n";
$out .= "connection:close\r\n\r\n";
$out .= $query;
fputs($fp, $out);
fclose($fp);
}
?
注意:当执行过程中,客户端连接断开或连接超时,都会有可能造成执行不完整,因此需要加上
ignore_user_abort(true); // 忽略客户端断开
set_time_limit(0); // 设置执行不超时
ajax会吗 不要给action加提交链接 给form设一个点击事件,用js获取input的值 用axaj提交并返回
利用php的系统调用,开启新的进程来实现。
php
提供了fsockopen函数,此函数的功能为初始化一个套接字连接到指定主机,默认情况下将以阻塞模式开启套接字连接。当然你可以通过stream_set_blocking()将它转换到非阻塞模式。这是关键。所以,思路就是:开启一个非阻塞的套接字连接到本机,本机收到之后作一些耗时处理。
首先看你Ajax是通过哪种提交方式提交的,比如说你设置的Ajax是通过post方式提交的 那后台PHP直接就通过$_post['']获取到传过来的值 关于你说的这个异步上传 最好是使用一些插件 我之前用过一个jQuery的异步上传的插件不错 我这里也有源码 这个是我的博客 上面写的很详细 另外那个插件我也也有 给分我传你邮箱
首先 php 7以下 不支持异步方式(有个类库 可以勉强算是支持了异步 名字忘了)
其次 php脚本 由于是逐行解析的,不常驻线程(当然可以设置为永久连接,不自动超时退出) 异步意义不大。
第三 我怀疑你是想问javascript的异步请求? 如何用php处理?
如果没问错的话 可以用其他方式来解决异步问题,就是同时发出多个web request请求 等多个请求成功之后将结果写入数据库(文件) 然后 有一个 一直在等待结果的php请求进程 一旦读取到了这个写入完毕的(数据库)文件结果 马上返回给浏览器