2010-11-06 16 views
5

गैर-अवरुद्ध मोड में SSL पर socket_create/socket_connect का उपयोग करना संभव है?एसएसएल पर गैर-अवरुद्ध सॉकेट कनेक्शन?

मैं वर्तमान में \fsockopen() का उपयोग कर रहा हूं जो मूल रूप से 'एसएसएल: //' उपसर्ग का समर्थन करता है। हालांकि, कनेक्शन होने तक fsockopen() अवरुद्ध हो जाएगा। यह एक स्क्रिप्ट में अवांछनीय है जिसमें लगभग 50 एक साथ सॉकेट पढ़ने की प्रतीक्षा कर सकते हैं।

मैंने \socket_create() का उपयोग करने के लिए एक टेस्ट स्क्रिप्ट बनाई है, जिसे \socket_connect() से पहले गैर-अवरुद्ध मोड में स्विच किया जा सकता है। हालांकि, ऐसा लगता है कि एसएसएल कनेक्शन के लिए कोई समर्थन नहीं है (fsockopen() रैपर के विपरीत)।

उत्तर

3

उत्तर stream_socket_client के बजाय फ्लैग STREAM_CLIENT_ASYNC_CONNECT के साथ उपयोग करना होगा;

write(3, "\26\3\1\0o\1\0\0k\3\1L\325w/\337u\343uV\341\365}H\331\21k\313\341Q\f\356\""..., 116) = -1 EAGAIN (Resource temporarily unavailable) 

कुछ बीएसडी संस्करण पर पर http://codepad.viper-7.com/:

<?php 
$socket = stream_socket_client(
     'ssl://197.136.197.92:443', $errno, $errstr, 
     3, // timeout should be ignored when ASYNC 
     STREAM_CLIENT_ASYNC_CONNECT 
); 
if (!$socket) { 
    echo "errno = ".$errno."\nerrstr = ".$errstr."\n"; 
    exit; 
} 

लिनक्स पर वहाँ के साथ एक अनंत लूप हो रहा है: लेकिन वहाँ एसएसएल के साथ कुछ बग हो रहा है

<br /> 
<b>Warning</b>: stream_socket_client() [<a href='function.stream-socket-client'>function.stream-socket-client</a>]: SSL: connection timeout in <b>/tmp/cpQ8Gv7B</b> on line <b>9</b><br /> 
<br /> 
<b>Warning</b>: stream_socket_client() [<a href='function.stream-socket-client'>function.stream-socket-client</a>]: Failed to enable crypto in <b>/tmp/cpQ8Gv7B</b> on line <b>9</b><br /> 
<br /> 
<b>Warning</b>: stream_socket_client() [<a href='function.stream-socket-client'>function.stream-socket-client</a>]: unable to connect to ssl://197.136.197.92:443 (Unknown error) in <b>/tmp/cpQ8Gv7B</b> on line <b>9</b><br /> 
errno = 115 
errstr = 

देखें bug #49295 भी।

+1

'stream_socket_client' बहुत अच्छा काम किया, धन्यवाद। एक मुद्दा एसिंक कनेक्शन पर टाइमआउट का पता लगाने में असमर्थता है। मैंने यहां अपना कामकाज पोस्ट किया है: http://stackoverflow.com/questions/3333398/php-get-socket-error-string-when-async-connect-fails/4114499#4114499 – CAMason

+0

@Craig आप किस संस्करण का उपयोग कर रहे हैं? हाल ही में यहां एक बग पेश की गई हो सकती है, क्योंकि मुझे बताई गई समस्याओं का सामना करना पड़ रहा है। उबंटू पर – Artefacto

+0

5.3.3। मुझे एसएसएल मोड में कोई चेतावनी नहीं दिखाई दे रही है। – CAMason

संबंधित मुद्दे