原生php就可以实现你要的功能,不需要wokerman也不需要swoole。用fsockopen模拟http请求,不fread就可以实现你要求的功能不管数据返回。
PHP7的话 curl也可以支持毫秒级别的请求;
/**
* 异步请求
*
* @author 柳下惠下柳(presleylee)
* @param string $str_url
* @param array $arr_postData
* @return bool
*/
function asyncRequest($str_url, $arr_postData = []) {
$str_method = 'GET';
if ($arr_postData) {
$str_method = 'POST';
}
$arr_url = parse_url($str_url);
$int_port = isset($arr_url['port']) ? : 80;
$res_fp = fsockopen($arr_url['host'], $int_port, $int_error, $str_errstr, 30);
if (!$res_fp) {
return false;
}
$str_requestPath = $arr_url['path'] . "?" . $arr_url['query'];
$str_header = $str_method . " " . $str_requestPath;
$str_header .= " HTTP/1.1\r\n";
$str_header .= "Host: " . $url_array['host'] . "\r\n";
$str_header .= "Connection:Close\r\n\r\n";
if (!$arr_postData) {
$str_tmpPost = strval(NULL);
foreach ($arr_postData as $k => $v) {
$str_tmpPost .= $k . "=" . $v . "&";
}
$str_postString .= "Content-Type:application/x-www-form-urlencoded\r\n";
$str_postString .= "Content-Length:". strlen($str_tmpPost) . "\r\n;";
$str_header .= str_tmpPost . "\r\n\r\n";
}
fwrite($res_fp, $str_header);
fclose($res_fp);
return true;
}
$str_url = 'https//api.aaa.com/async/log';
$arr_postData = [
'field1' => 'aaaa'
];
asyncRequest($str_url, $arr_postData);
接收请求:
ignore_user_abort(TRUE);
set_time_limit(0);
//要执行的代码