У меня проблемы с использованием APNS с PHP и получением следующего сообщения:
stream_socket_client(): Failed to enable crypto
Проблема возникает только иногда, а в других случаях это может привести к толчку.
Поскольку у меня есть тестовый скрипт в цикле из 10 итераций, я иногда получаю это:
stream_socket_client(): SSL: Connection reset by peer
Я тестирую с помощью сервера песочницы tls://gateway.sandbox.push.apple.com:2195
Вот что я попробовал:
sslv3://
а также tls://
,644
755
Кажется, что все решения, которые я нашел в Google и SO, — это люди, у которых вообще есть проблемы.
Я чувствую, что обслуживание ограничено тарифом, может быть? Потому что мы подождали некоторое время (около 15 минут), а затем попробовали снова, и смогли успешно отправить около 100 сообщений, пока я не начал получать это сообщение снова.
Услуга push sandbox ограничена по ставке. Я испытал это сам при тестировании, но никогда не сталкивался с таким ограничением при использовании производственного API.
Вы также можете поразить их другие средства защиты.
Вы открываете соединение, отправляете сообщение, закрываете соединение, а затем зацикливаетесь и делаете все заново?
Это приведет к удалению ваших уведомлений. Apple хочет, чтобы вы отправляли несколько push-уведомлений, используя одно и то же соединение, а не новое каждый раз.
Лучшие практики для управления соединениями
Вы можете установить несколько подключений к одному и тому же шлюзу или
несколько экземпляров шлюза. Если вам нужно отправить большое количество
удаленные уведомления, распространяйте их по соединениям на несколько
разные шлюзы. Это повышает производительность по сравнению с использованием
одно соединение: оно позволяет отправлять удаленные уведомления быстрее,
и это позволяет APN доставлять их быстрее.Держите ваши соединения с APN открытыми через несколько уведомлений;
не многократно открывать и закрывать соединения. APNs лечит быстро
подключение и отключение как атака типа «отказ в обслуживании». Вам следует
оставьте соединение открытым, если только вы не знаете, что оно простаивает
расширенный период времени — например, если вы отправляете уведомления только
ваши пользователи один раз в день, можно использовать новое соединение каждый день.
Из Apple Docs @ https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html
Мой код PHP генерировал следующую ошибку:
PHP Warning: stream_socket_client(): Failed to enable crypto in /private/tmp/t.php on line 12
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /private/tmp/t.php on line 12
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /private/tmp/t.php on line 24
Проблема была, чертов сертификат, истек позавчера! 🙂 Вы можете в это поверить?
Итак, мне нужно пересоздать мой файл PEM.
Нет необходимости воссоздавать ваш файл pem
эта ошибка возникает, когда вы используете неверный пароль
С уважением
Эмилиано
У меня была эта проблема. Исчез после предоставления разрешения на запись всем пользователям для файла .pem.
У меня есть эта проблема, потому что я по глупости забыл включить расширение файла (.pem) при указании пути к файлу для local_cert.
несколько проверок :
spaces
и без <
или же >
В моем случае проблема была с моим Mac (OSX Sierra). Я загрузил php и cert на свой сервер, запустил его, и уведомление было доставлено.