説明: IOS の APNS に通知をプッシュするためのサーバー側として php を使用します。 添付のコードは
public static function apple_push($data,$deviceToken){ $passphrase='123456'; $ckfile="ck.pem"; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', $ckfile); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); //$fp = stream_socket_client('ssl://gateway.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if(!$fp){ return false; } $payload=json_encode($data); $pushdata = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; $result = fwrite($fp, $pushdata, strlen($pushdata)); if(!$result){ file_put_contents(dirname(__FILE__)."/pushlog.txt",$result.'-'.$deviceToken."-".microtime().PHP_EOL,FILE_APPEND); } fclose($fp);}
この種のことは間違いなく非同期で実装する必要があります
xmpphp を試して、チャットサーバーを実装すると、より信頼できる可能性があります。
非同期ですが、毎回開いたり閉じたりするのは時間がかかりすぎて、30分以内にプッシュすることはできません。
xmpphp の使用は考えていません。非同期プッシュなので、永続的な接続は必要ありません。
さて、私の解決策は次のとおりです: pcntl を使用し、実行のために 10 個のプロセスを開きます
これを迅速に行う唯一の方法は、複数のプロセスを使用することです。
ご回答ありがとうございます。しかし、pcntl を使用するときに別の問題が発生しました
http://bbs.csdn.net/topics/390829010