如何使用PHP在以下代码上同时向iOS服务器发送1000个推送通知。
function push_iphone($deviceTokenid,$message){
$passphrase = '12345';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
return false;
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'message' => $message,
'sound' => 'default',
'flag' => '0'
);
// Encode the payload as JSON
$payload = json_encode($body);
//echo $device_token_id;
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceTokenid) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if(!$result){
echo "tst";
return true;
}else{ echo "test ";
return false;
}
fclose($fp);
}
任何人都可以帮助我吗?
苹果在他们的文档中有一个答案:
您可以建立到同一网关或 多个网关实例。如果需要发送大量 远程通知,将它们通过连接到多个 不同的网关。与使用 单一连接:它可以让您更快地发送远程通知, 它让 APNs 更快地交付它们。
通过多个通知保持与 APNs 的连接处于打开状态; 不要重复打开和关闭连接。APNs 治疗快速 连接和断开连接作为拒绝服务攻击。你应该 保持连接处于打开状态,除非您知道它将在 延长时间段 - 例如,如果您仅将通知发送到 您的用户每天一次,每天可以使用新连接。
通过线程化您的 php 应用程序,您可以(几乎)同时实现这一点。看看 PHP 多进程的模式?用于设置叉子的方向。