Fread требует больше времени, чтобы получить ответ в php - PullRequest
0 голосов
/ 11 декабря 2018

В моем проекте есть функция push-уведомлений 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);

Но для получения ответа fread требуется больше времени, когда я пытаюсь отправить уведомление на несколько устройств идля этого используется только одно соединение APN. Если я пытаюсь отправить уведомление на один идентификатор устройства, этот код работает правильно.как решить проблему?

Пожалуйста, помогите мне.

...