如何在 http/2 上使用 curl for apns 更快地将请求刷新到客户端



你好,这个使用 curl 的 php 脚本需要将近 10 分钟才能在 Apple HTTP/2 APNS 服务器上完成 2500 个推送通知的发送。

如果 url 每次都更改,如何加快发送到同一服务器的 http 请求的数量。

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2_0,
CURLOPT_URL => $url,
CURLOPT_PORT => 443,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $json_alert,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HEADER => 1
));
// send push for each token
foreach ($all_tokens as $device_token) {
$url = "{$base_url}/3/device/{$device_token}";
// set url per device token
curl_setopt($curl, CURLOPT_URL, $url);
// go...
$result = curl_exec($curl);
// get response
$status = curl_getinfo($curl);
if ($status['http_code'] == '410') {
// device does not accept push for this app anymore
$bad_tokens[] = $device_token;
} else if($status['http_code'] == '200') {
$push_sent_succss_count += 1;
}
}
curl_close($curl);

您可以使用PHP的cURL多句柄,或者使用带有批处理函数的库,例如Guzzle。

这些将允许您并行发送请求,并在响应到达时处理响应,或者等待最后一个/最慢的请求并处理所有响应。

最新更新