加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:4种PHP异步执行的常用方式

发布时间:2020-12-13 04:07:06 所属栏目:PHP教程 来源:网络整理
导读:《4种PHP异步执行的常用方式》要点: 本文介绍了4种PHP异步执行的常用方式,希望对您有用。如果有疑问,可以联系我们。 本文为大家讲述了 php异步调用方法 ,供大家参考研究,具体内容如下 客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起哀求,

《4种PHP异步执行的常用方式》要点:
本文介绍了4种PHP异步执行的常用方式,希望对您有用。如果有疑问,可以联系我们。

本文为大家讲述了php异步调用方法,分享给大家供大家参考,具体内容如下
客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起哀求,服务器端接收到哀求后执行处理,并返回处理结果.
有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回给客户端.但因为php是同步执行的,所以客户端需要等待服务处理完才可以进行下一步.
因此对于耗时的操作适合异步执行,服务器接收到哀求后,处理完客户端需要的数据就返回,再异步在服务器执行耗时的操作.
1.使用Ajax 与 img 标记
原理,服务器返回的html中插入Ajax 代码或 img 标记,img的src为需要执行的程序.
优点:实现简单,服务端无需执行任何调用
缺点:在执行期间,浏览器会一直处于loading状态,因此这种方法并不算真正的异步调用.
PHP实例

$.get("doRequest.php",{ name: "fdipzone"} );
<img src="doRequest.php?name=fdipzone">

2.使用popen
使用popen执行命令,语法:
PHP实例

// popen ― 打开进程文件指针  
resource popen ( string $command,string $mode )
pclose(popen('php /home/fdipzone/doRequest.php &','r'));

优点:执行速度快
缺点:
PHP实例

  • 1).只能在本机执行
  • 2).不能传递大量参数
  • 3).拜访量高时会创建很多进程

3.使用curl
设置curl的超时时间 CURLOPT_TIMEOUT 为1 (最小为1),因此客户端需要等待1秒
PHP实例

<?php 
$ch = curl_init(); 
$curl_opt = array( 
  CURLOPT_URL,'http://www.example.com/doRequest.php'
  CURLOPT_RETURNTRANSFER,1,CURLOPT_TIMEOUT,1 
); 
curl_setopt_array($ch,$curl_opt); 
curl_exec($ch); 
curl_close($ch); 
?>

4.使用fsockopen
fsockopen是最好的,缺点是需要自己拼接header部分.
PHP实例

<?php 
   
$url = 'http://www.example.com/doRequest.php'; 
$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.1rn"; 
  $out .= "host:".$host."rn"; 
  $out .= "content-length:".strlen($query)."rn"; 
  $out .= "content-type:application/x-www-form-urlencodedrn"; 
  $out .= "connection:closernrn"; 
  $out .= $query; 
   
  fputs($fp,$out); 
  fclose($fp); 
} 
   
?>

注意:当执行过程中,客户端连接断开或连接超时,都会有可能造成执行不完整,因此需要加上
PHP实例

ignore_user_abort(true); // 忽略客户端断开 
set_time_limit(0);    // 设置执行不超时

以上就是php异步调用办法的详细介绍,希望对大家的学习有所帮助.PHP实例

《4种PHP异步执行的常用方式》是否对您有启发,欢迎查看更多与《4种PHP异步执行的常用方式》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读