php异步处理
Posted fps2tao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php异步处理相关的知识,希望对你有一定的参考价值。
<?php namespace Index\\Controller; use Core\\Controller; class test extends Controller public function test11() sleep(5); file_put_contents( ‘./123.log‘, "123\\r\\n" , FILE_APPEND ); public function test12() $url = ‘http://127.0.0.1:1001/index/test/test11‘; $res = self::asyncRequest($url); echo "我没有等a站点返回值,我就执行了"; /** * php异步请求 * * @param $host string 主机地址 * @param $path string 路径 * @param $param array 请求参数 * @return string */ public static function asyncRequest($url,$post_data=array(),$cookie=array()) $url_arr = parse_url($url); $port = isset($url_arr[‘port‘])?$url_arr[‘port‘]:80; if($url_arr[‘scheme‘] == ‘https‘) $url_arr[‘host‘] = ‘ssl://‘.$url_arr[‘host‘]; $fp = fsockopen($url_arr[‘host‘],$port,$errno,$errstr,30); if(!$fp) return false; $getPath = isset($url_arr[‘path‘])?$url_arr[‘path‘]:‘/index.php‘; $getPath .= isset($url_arr[‘query‘])?‘?‘.$url_arr[‘query‘]:‘‘; $method = ‘GET‘; //默认get方式 if(!empty($post_data)) $method = ‘POST‘; $header = "$method $getPath HTTP/1.1\\r\\n"; $header .= "Host: ".$url_arr[‘host‘]."\\r\\n"; if(!empty($cookie)) //传递cookie信息 $_cookie = strval(NULL); foreach($cookie AS $k=>$v) $_cookie .= $k."=".$v.";"; $cookie_str = "Cookie:".base64_encode($_cookie)."\\r\\n"; $header .= $cookie_str; if(!empty($post_data)) //传递post数据 $_post = array(); foreach($post_data AS $_k=>$_v) $_post[] = $_k."=".urlencode($_v); $_post = implode(‘&‘, $_post); $post_str = "Content-Type:application/x-www-form-urlencoded; charset=UTF-8\\r\\n"; $post_str .= "Content-Length: ".strlen($_post)."\\r\\n"; //数据长度 $post_str .= "Connection:Close\\r\\n\\r\\n"; $post_str .= $_post; //传递post数据 $header .= $post_str; else $header .= "Connection:Close\\r\\n\\r\\n"; fwrite($fp, $header); usleep(1000); // 这一句也是关键,如果没有这延时,可能在nginx服务器上就无法执行成功 fclose($fp); return true;
转 : https://www.cnblogs.com/xin-jun/p/10594625.html
以上是关于php异步处理的主要内容,如果未能解决你的问题,请参考以下文章
PHP. 02®. Ajax异步处理常见的响应状态XMLHttpRequest对象及APIajax的get/post方法