php异步调用.txt
/**
* 异步执行
* @param string $url 网址
* @param mixed $post post数据
* @param string $contentType
*/
function async_exec($url, $post = '', $contentType = 'application/x-www-form-urlencoded', $isDebug = false){
if(strpos($url, 'http://') !== false || strpos($url, 'https://') !== false ){
$u = parse_url($url);
$host = $u['host'];
$port = isset($u['port']) ? $u['port'] : 80;
$url = str_replace($u['scheme'].'://'.$host.(isset($u['port']) ? ':'.$port : ''), '', $url);
} else {
$host = $_SERVER['HTTP_HOST'];
$port = 80;
}
$fp = fsockopen ( "{$host}", $port, $errno, $errstr, 10);
if (! $fp) {
echo "{$errstr} {$errno} \\n";
} else {
if(!empty($post)){
if(is_array($post)){
$post = http_build_query($post);
}
$header = [
'POST '.$url.' HTTP/1.1',
'Accept: */*',
'Host: '.$host,
'Content-type: '.$contentType,
'Content-Length: '.strlen($post),
'Connection: Close',
$post
];
} else {
$header = [
'GET '.$url.' HTTP/1.1',
'Host: '.$host,
'Connection: Close'
];
}
fputs($fp, join("\r\n", $header)."\r\n\r\n");
if($isDebug){
while(!feof($fp)){
echo fgets($fp, 128);
break;
}
}
fclose($fp);
}
}