四种PHP异步执行的常用方式-php教程

资源魔 24 0
本文为各人讲述了php异步伐用办法,分享给各人供各人参考,详细内容以下

客户端与效劳器端是经过HTTP协定进行衔接通信,客户端发动申请,效劳器端接纳到申请后执行解决,并前往解决后果。

有时效劳器需求执行很耗时的操作,这个操作的后果其实不需求前往给客户端。但由于php是同步执行的,以是客户端需求期待效劳解决完才能够进行下一步。

因而关于耗时的操作适宜异步执行,效劳器接纳到申请后,解决完客户端需求的数据就前往,再异步正在效劳器执行耗时的操作。

1.应用Ajax 与 img 标志

原理,效劳器前往的html中拔出Ajax 代码或 img 标志,img的src为需求执行的顺序。

优点:完成简略,效劳端无需执行任何挪用

缺陷:正在执行时期,阅读器会不断处于loading状态,因而这类办法其实不算真实的异步伐用。

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

2.应用popen

应用popen执行饬令,语法:

// popen — 关上过程文件指针 
resource popen ( string $co妹妹and
, string $mode
)
pclose(popen('php /home/fdipzone/doRequest.php &', 'r'));

优点:执行速率快

缺陷:

1).只能正在本机执行

2).不克不及通报年夜量参数

3).拜访量高时会创立不少过程

3.应用curl

设置curl的超不时间 CURLOPT_TIMEOUT 为1 (最小为1),因而客户端需求期待1秒

<?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
    
$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.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);    // 设置执行没有超时

更多PHP相干常识,请拜访PHP教程!

以上就是四种PHP异步执行的罕用形式的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 PHP异步

抱歉,评论功能暂时关闭!