b.PHP
<?PHP$url = 'http://fsc.com/a.PHP';$param = array( 'name'=>'fdipzone', 'gender'=>'male', 'age'=>30);doRequest($url, $param);echo "立马输出";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); stream_set_blocking($fp,true);//开启了手册上说的非阻塞模式 stream_set_timeout($fp,1);//设置超时 $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); /* //需要显示返回的信息,就用这个 fwrite($fp, $out); $content = ''; while (!feof($fp)) { $content .= fgets($fp); } fclose($fp); echo $content;//处理返回的信息 */}
a.PHP
<?PHP// 当执行过程中,客户端连接断开或连接超时,都会有可能造成执行不完整,因此需要加上ignore_user_abort(true); // 忽略客户端断开 此处的代码需要PHP.ini开启相关的选项set_time_limit(0); // 设置执行不超时$data = $_GET;if(empty($data)){ $data = $_POST;}$data['cont']= '延迟10秒写入,有上面的ignore函数在,网页客户端关闭网页,也可以照样执行';$str = Json_encode($data,JsON_UnesCAPED_UNICODE);sleep(10);//模拟耗时任务file_put_contents('./1.txt',$str);
打开上面的b.PHP ,过10秒以后,a页面将接收到的东西写到1.txt里面,
打开b.PHP后,关闭页面也会执行异步写入 *** 作,不会断开
总结以上是内存溢出为你收集整理的PHP fsockopen 异步写入文件全部内容,希望文章能够帮你解决PHP fsockopen 异步写入文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)