php怎么异步执行,php如何异步地执行代码?

原生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);

//要执行的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值