Intereting Posts
Ebay api GetSellerList, анализ ответа XML wordpress: идентификатор категории и идентификатор сообщения не получаются, когда я изменяю постоянную ссылку как сделать php-выражения и выполнить из базы данных? MySIte немедленно выйдет из системы для второго запроса Laravel / Eloquent WHERE NOT SUBQUERY Почему MySQL сообщает о синтаксической ошибке в FULL OUTER JOIN? Подготовленный оператор не позволяет мне называть $ mysqli-> stmt_init () array_diff в массиве ассоциативных массивов в php Доступ к типу varray, определенному внутри пакета, с помощью oci_new_collection как получить список всех путей / файлов на веб-странице с помощью wget или curl в php? Как проверить, содержит ли многомерный массив только пустые значения? SQLite для XML через PHP Необходимое руководство по перенаправлению пользователя, если он не вошел в систему на панели администратора Обработка данных полевого поля Array Стол во время цикла бок о бок

Ошибка чтения с улучшенным уведомлением Apple с помощью PHP

Im пытается вызвать ошибку, поэтому я могу построить журнал регистрации ошибок для APNS. Поэтому Im отправляет слишком большую полезную нагрузку на сервер. Но я не ошибаюсь.

Код:

Подключение:

$streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $this->_sslPem); stream_context_set_option($streamContext, 'ssl', 'passphrase', ""); $this->_apnsConnection = stream_socket_client("ssl://" . Config::$apns['host'] . ":" . Config::$apns['port'], $error, $errorString, $timeout, STREAM_CLIENT_CONNECT, $streamContext); if ($this->_apnsConnection) { stream_set_blocking($this->_apnsConnection, 0); } 

Отправка уведомления:

 $this->_log("Sending notification to device token '$deviceToken'"); $identifiers = array(); for ($i = 0; $i < 4; $i++) { $identifiers[$i] = rand(1, 100); } $apnsMessage = chr(1) . chr($identifiers[0]) . chr($identifiers[1]) . chr($identifiers[2]) . chr($identifiers[3]) . pack('N', time() + 3600) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($message)) . $message; $bytes = fwrite($this->_apnsConnection, $apnsMessage); $this->_log("bytes written: $bytes"); $this->_log("Fetching response"); $response = fread($this->_apnsConnection, 6); $this->_log("Strlen: " . strlen($response)); if ($response === false || strlen($response) != 6) { $this->_log("No response..."); } else { $responseArray = unpack('Ccommand/CstatusCode/Nidentifier', $response); $this->_log("Response!"); $this->_log($responseArray); } 

Вывод:

 2011-07-12 16:25:55: Sending notification to device token 'XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX' 2011-07-12 16:25:55: bytes written: 438 2011-07-12 16:25:55: Fetching response 2011-07-12 16:25:55: Strlen: 0 2011-07-12 16:25:55: No response... 

У меня есть решение для этого.

Решение:

 $read = array($this->_apnsConnection); $null = null; $changedStreams = stream_select($read, $null, $null, 0, 1000000); if ($changedStreams === false) { $this->_log("Error: Unabled to wait for a stream availability"); } elseif ($changedStreams > 0) { $responseBinary = fread($this->_apnsConnection, 6); if ($responseBinary !== false || strlen($responseBinary) == 6) { $response = unpack('Ccommand/Cstatus_code/Nidentifier', $responseBinary); $this->_log($response); } }