当前位置:首页 > PHP教程 > php高级应用 > 列表

异步执行PHP任务fsockopen的干货

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-21 10:07:19 浏览: 评论:0 

PHP异步执行任务fsockopen的实用方法

我们创建了一个基于fsockopen的函数,这个函数中利用fsockopen去访问url,但是在访问时,并不要求获取url显示的内容,而是仅仅发出访问请求,请求到达后马上关闭这个访问。

这样做的好处就是无需再等待被访问的url是否返回了可靠的信息,节约了时间,这段代码的执行时间在0.1-0.2秒之间,对于普通访客而言,几乎察觉不到。因此,在使用时,仅需要调用这个函数和对应的url即可。不过,这里并没有提供数据传输的部分,如何传输数据,其实只需要在$header中增加post的内容即可。

  1. /** 
  2.  
  3.  * @生生 2018/12/24 19:25:06 
  4.  
  5.  * [asynchronous PHP异步执行任务] 
  6.  
  7.  * @param  string $url       执行任务的url地址 
  8.  
  9.  * @param  array  $post_data 需要post提交的数据POST 
  10.  
  11.  * @param  array  $cookie    cookie数据用于登录等的设置(此处内部调用,无需鉴权) 
  12.  
  13.  * @return boole 
  14.  
  15.  */ 
  16.  
  17. public function asynchronous($url,$post_data = array()) 
  18.  
  19.  
  20.     $url_array = parse_url($url); 
  21.  
  22.     dump($url_array); 
  23.  
  24.     //用fsockopen()尝试连接  
  25.  
  26.     $fp = fsockopen($url_array['host'], 80, $errno$errstr, 30); 
  27.  
  28.     if (!$fp) { 
  29.  
  30.         echo "$errstr ($errno)<br />\n"
  31.  
  32.     } else { 
  33.  
  34.         //建立成功后,向服务器写入数据  
  35.  
  36.         $getPath = isset($url_array['path']) ? $url_array['path'] : '/'
  37.  
  38.         $out = "GET /".$getPath."/ HTTP/1.1\r\n"
  39.  
  40.         $out .= "Host:".$url_array['host']."\r\n"
  41.  
  42.         $out .= "Connection: Close\r\n\r\n"
  43.  
  44.          
  45.  
  46.         fwrite($fp$out); 
  47.  
  48.         /*忽略执行结果 
  49.  
  50.         while (!feof($fp)) { 
  51.  
  52.             echo fgets($fp, 128); 
  53.  
  54.         }*/ 
  55.  
  56.         //关闭链接 
  57.  
  58.         fclose($fp); 
  59.  
  60.     } 
  61.  

调用方法

  1. /** 
  2.  
  3. *  异步方法 
  4.  
  5. *  参数:(string)要执行的方法url,(array)传入参数 
  6.  
  7. */ 
  8.  
  9. function yibu(){ 
  10.  
  11.     $this->asynchronous('https://www.phpfensi.com/index.php/admin/index/test',['1'=>'haha']); 
  12.  
  13.     //直接返回结果 
  14.  
  15.     echo '操作成功'
  16.  
  17. }

Tags: PHP异步执行 fsockopen

分享到: