我的任务是向多个用户发送推送通知,该功能可以正常使用以下功能
function push_to_apns_badge($token_array)
{
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$pem_path = MODULE_DIR.'push_notification'.DIRECTORY_SEPARATOR;
$apnsCert = $pem_path.'apns-dev.pem';
if(is_array($token_array) && count($token_array))
{
foreach ($token_array as $token)
{
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
$badge_count = (int)$token['badge'];
$payload = get_payload_badge($badge_count);
$apnsMessage = get_one_message_to_write_badge($token['token'],$payload);
$wrt = fwrite($apns, $apnsMessage);
$_error_str .= " $error $errorString ";
socket_close($apns);
fclose($apns);
}
}
return array(true,$_error_str);
}
但它需要太多的CPU使用。
我能以某种方式改善表现吗?或者那里缺少什么?
由于
答案 0 :(得分:2)
你与Apple建立了太多联系,如果你这样做,他们可能会阻止你。
我怀疑创建和拆除与每条消息的连接也是你的慢点!
Apple建议打开一个连接,发送你的消息,让它尽可能长时间打开,并在同一个连接上发送未来的消息。
您可能想看看Urban Airship,它将每月免费发送100万条消息吗?
答案 1 :(得分:1)
或者,您可以使用apns-php
免费完成http://code.google.com/p/apns-php/
我的客户目前为UA支付了一笔财富,我们正在远离他们。