Apple推送通知服务PHP cpu使用率太高。我怎样才能提高性能?

时间:2011-08-18 07:07:28

标签: php apple-push-notifications

我的任务是向多个用户发送推送通知,该功能可以正常使用以下功能

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使用。

我能以某种方式改善表现吗?或者那里缺少什么?

由于

2 个答案:

答案 0 :(得分:2)

你与Apple建立了太多联系,如果你这样做,他们可能会阻止你。

我怀疑创建和拆除与每条消息的连接也是你的慢点!

Apple建议打开一个连接,发送你的消息,让它尽可能长时间打开,并在同一个连接上发送未来的消息。

您可能想看看Urban Airship,它将每月免费发送100万条消息吗?

答案 1 :(得分:1)

或者,您可以使用apns-php

免费完成

http://code.google.com/p/apns-php/

  • 一个易于使用的APNS课程,您可以将一堆邮件排队并一次性发送。

我的客户目前为UA支付了一笔财富,我们正在远离他们。