2009-07-12 5 views
3

J'ai un code PHP simple qui crée une connexion SSLComment créer une connexion SSL en PHP avec SO_KEEPALIVE?

$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); 

Mais savoir comment mettre SO_KEEPALIVE à vrai? J'ai aussi essayé STREAM_CLIENT_PERSISTENT, ce qui n'est pas la même chose.

Répondre

1

Avez-vous vérifié (via le suivi réseau) que vous avez besoin de définir l'option de socket?

Qu'allez-vous envoyer sur le socket? HTTP/HTTPS introduit sa propre fonctionnalité de réutilisation de connexion via l'en-tête "Connection", donc l'option sur le socket n'est pas nécessairement ce que vous voulez définir.

1

SO_KEEPALIVE comme dans

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.
?
Je ne sais pas comment cela est lié à STREAM_CLIENT_PERSISTENT mais vous pouvez définir cette option avec socket_set_option (c'est-à-dire en utilisant le sockets extension et non les flux).

+0

comment et quelle option choisir? – erotsppa

+0

Ce serait socket_set_option ($ socket, SOL_SOCKET, SO_KEEPALIVE, 1). Mais là encore, vous n'avez pas le support SSL. Je n'ai pas trouvé un moyen de définir l'option pour le flux SSL. Vous auriez besoin de php_stream_set_option pour cela, mais c'est une fonction interne qui n'est pas exposée au script PHP. – VolkerK

+0

ne peut pas croire PHP n'a pas un moyen de le faire .... – erotsppa

Questions connexes