PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2104字,纯文字阅读大概需要4分钟。
内容图文
![PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决)](/upload/InfoBanner/zyjiaocheng/689/1528177813f64c619c7a4042de454152.jpg)
index.php
/** * php异步请求 * * @param $host string 主机地址 * @param $path string 路径 * @param $param array 请求参数 * @return string */ 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; } //$url = 'http://xxx.com/1.php'; $url = 'http://localhost/1.php'; $res = asyncRequest($url); var_dump($res); echo "我没有等a站点返回值,我就执行了";
1.php
sleep(3); file_put_contents("1234.txt",time(),FILE_APPEND);
这段代码:
本地不用等待,并且1.php可以请求带 (本地环境win7+php7.1.13和apache)
但是放到服务端:不用等待,但是1.php不能被请求到。(服务器环境win2016+php7.1.13和apache,宝塔集成的环境)
奇怪的是,本地如果请求服务器需要等待的1.php,同样请求不到.
查的一些参考:
https://blog.csdn.net/weixin_33690367/article/details/91689736
https://zhidao.baidu.com/question/2267107086723350868.html
https://segmentfault.com/q/1010000012574466/a-1020000012583303
内容总结
以上是互联网集市为您收集整理的PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决)全部内容,希望文章能够帮你解决PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。