1

私は PHP を使用して APNS に接続していますが、通常は問題なく動作します。私はまだサンドボックス環境にいて、まだ本番環境を使用していません。私は最初、Ray Wenderlich プッシュチャット チュートリアルに基づいた PHP コードを使用し、その後、Ubuntu で実行される ApnsPHP に移行しました。私のサーバープロセスは接続を確立し、データベースをポーリングしてメッセージを送信する必要があるかどうかを確認し、それらを送信し、少しスリープしてから再度ポーリングします。

どちらの試行でも同じ問題が発生しました。一定期間 (一晩など) 非アクティブ状態が続くと、最初のメッセージはデバイスに送信されません。エラーは報告されず、ソケットに書き込まれたバイト数は正しいです。ただし、2 番目のメッセージを送信すると、0 バイトが書き込まれて失敗します。

これは予想される動作ですか?Apple は、「長期間アイドル状態になることがわかっている」場合を除き、ソケット接続を永続化するようアドバイスしていますが、どこにも具体的な言及は見たことがありません。メッセージはユーザー アクティビティの結果であるため、システムがアイドル状態になるかどうかは予測できません。

何らかの方法で接続がタイムアウトになったと思いますが、ソケット接続の実行可能性を再確認する方法はありますか?

障害が発生する前に送信されたメッセージを再送信するか、接続がアイドル状態である時間を監視し、一定期間後に再接続するなど、問題を回避する方法がいくつか考えられます。しかし、私がそれをした場合、合理的な期間はどれくらいになるでしょうか?

他の誰かがこれを見たことがありますか?それを処理するベストプラクティスの方法はありますか?

4

0 に答える 0