Здравствуйте. перерыв массу форумов и готовых решений "скрутил" вот такой кусок кода: PHP: $f=fsockopen('tcp://epp.uadns.com',700,$err,$errs,30); stream_set_blocking($f,false); // если не ставить то скрипт просто висит $k=stream_get_meta_data($f); // ради интереса что не так print_r($k); возвращает: Array ( [stream_type] => tcp_socket/ssl [mode] => r+ [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => [eof] => ) далее: PHP: $b=fread($f,4); // возвращает 0 $c=unpack('N',$b); // ругня та то что необходимо 4 $d=fread($f,$c[1]-4); // 0 эффекта... пробовал вариант с 2 и 'n' - то же самое. feof($f) показывает false. Меня смущает почему показывает unread_bytes - 0 и r+... а писать тогда как? В техподдержке дрс сказали не использовать fread. пробовал fgets, stream_get_contents - резутьтат тот же... Мож кто сталкивался как прочитать с epp? Спасибо.
нет. та же ситуация. или висит или возвращает ""... смотрел трафик, если открываю сокет и сразу читаю, то вообще обмена трафиком нет. если сначала пишу в сокет PHP: $send=pack('N',(strlen($data)+4).$data); fwrite($f,$send); // вешает скрипт...( а если PHP: fwrite($f, $data); // возращает размер записанных байт то обмен идет, но кусок: PHP: $b=fread($f,4); // возвращает 0 $c=unpack('N',$b); // ругня та то что необходимо 4 $d=fread($f,$c[1]-4); // 0 эффекта... вылетает в ошибку невозможно занять 3567859158 байт... в варианте с 'n' и 2 байта эта цифра 5863
часть проблемы отпала: PHP: $context = stream_context_create(); $result = stream_context_set_option($context, 'ssl', 'local_cert', 'cacert.key'); $result = stream_context_set_option($context, 'ssl', 'verify_peer', false); $result = stream_context_set_option($context, 'ssl', 'verify_peer_name', false); $ecli=stream_socket_client('tls://epp.uadns.com:700',$errn,$errst,30,STREAM_CLIENT_CONNECT,$context); заработало. но теперь PHP: $b=fread($f,4); $c=unpack('N',$b); $d=fread($f,$c[1]-4); // возвращает приветствие fwrite($f,$hd.$login); //hd - pack('N',strlen($login)+4); $b=fread($f,4); // возвращает 1 байт... $c=unpack('N',$b); // ессесно ругня $d=fread($f,$c[1]-4); // тут уже читать нечего... пробовал вставлять usleep(2000000) между write и read. эффекта не дало. в чем уж тут загвоздка я не знаю...