2009-07-12 11 views
3

私は、SSL接続SO_KEEPALIVEを使用してPHPでSSL接続を作成するには?

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $this->sslPem); 
stream_context_set_option($streamContext, 'ssl', 'passphrase', $this->passPhrase); 

$this->apnsConnection = stream_socket_client('ssl://'.$this->apnsHost.':'.$this->apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext); 

を作成しますが、trueにSO_KEEPALIVEを設定する方法を知っているいくつかの簡単なPHPコードを持っていますか?私もSTREAM_CLIENT_PERSISTENTを試しましたが、これは同じことではありません。

答えて

1

(ネットワークトレースを介して)ソケットオプションを設定する必要があることを確認しましたか?

ソケット経由で何を送信していますか? HTTP/HTTPSは "Connection"ヘッダーを介して独自の接続再利用機能を導入しているため、ソケット上のオプションは必ずしも設定する必要はありません。

1

SO_KEEPALIVE like

The SO_KEEPALIVE option causes a packet (called a 'keepalive probe') to be sent to the remote system if a long time (by default, more than 2 hours) passes with no other data being sent or received.

これはSTREAM_CLIENT_PERSISTENTにどのように関連しているのかわかりませんが、 socket_set_option(つまり、ストリームではなく sockets extensionを使用)でこのオプションを設定できます。

+0

どのように設定するのですか? – erotsppa

+0

これはsocket_set_option($ソケット、SOL_SOCKET、SO_KEEPALIVE、1)になります。しかし、再びあなたはSSLサポートを持っていません。 ssl-streamのオプションを設定する方法が見つかりませんでした。そのためにはphp_stream_set_optionが必要ですが、PHPスクリプトに公開されていない内部関数です。 – VolkerK

+0

PHPはこれを行う方法がないと信じられません.... – erotsppa

関連する問題