首页 > 解决方案 > fread 需要更多时间才能在 php 中获得响应

问题描述

在我的项目中,具有 iOS 推送通知功能。因为我使用 fread 函数来获取状态码。

我的代码是,

$apns = stream_socket_client('ssl://gateway.push.apple.com:2195',
                            $err, 
                            $errstr, 
                            60, 
                            STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, 
                            $ctx);

$deviceIds = array(
                    'deviceID1',
                    'deviceID2',
                    'deviceID3',
                    'deviceID4'
                );
foreach ($deviceIds as $deviceId) {
    $payload = array();

    $payload['aps'] = array(
        'alert' => $message_ios,
        'badge' => (int) $badge,
        'sound' => 'default',
        'lang' => "$language_type",
    );
    $payload['c'] = array(
        'section_type' => $section_type
    );

    $payload = json_encode($payload);

    $message = chr(0) . pack('n', 32) . pack('H*', $deviceId) . pack('n', strlen($payload)) . $payload;
    $result = fwrite($apns, $message, strlen($message));
    $response = fread($apns, 6);
    $statusCode = $response['status_code'];
}
fclose($apns);

但是,当我尝试向多个设备发送通知并且为此只有一个 APN 连接时,fread 需要更多时间来获得响应。如果我尝试向一个设备 ID 发送通知,则此代码可以正常工作。如何解决问题?

请帮我。

标签: phpiosapple-push-notificationsfread

解决方案


推荐阅读