Добрый день. Не получается считать данные из потока. Помогите, плз, скажите, что я делаю не так $sock = socket_create (AF_INET,SOCK_STREAM,SOL_TCP); socket_connect ($sock,'mydomain.com',80); $req = 'GET /search?p=test string HTTP/1.1'."\r\n".'Host: mydomain.com'."\r\n\r\n"; socket_write ($sock,$req); $str=''; while (!feof($sock)): $str = $str.socket_read($sock,4096); endwhile; Ругается он вот так Warning: feof(): supplied resource is not a valid stream resource in /home/admin/domains/html/link.php on line 12
RTFM socket_create() Returns a socket resource on success, or FALSE on error Сокет не открывается просто и все. Кста, имей в виду еще оттуда же A typical network connection is made up of 2 sockets, one performing the role of the client, and another performing the role of the server.
Спасибо за оперативность. Отвечу срузу всем. Сокет открывается, т.е. если while убрать, то первые 4096 байт приходят, а хочется дальше прочитать. Что касается того почему именно с сокетами надо заморочиться, то ответ достаточно прост. Стандартные fsocket или filegetcontent вряд ли дадут вам возможность выполнить скрипт эмулируя браузер. Дело в том, что удаленная сторона - это search.yahoo.com, которая очень не любит автоматических запросов. А у нее иногда бывают периоды, когда запрашивать надо не раз в день, а раз в минуту Так все таки, есть идея как считать ответ удаленной стороны целиком используя сокет, отрытый socket_create?
Спасибо, но это я и так понял Вопрос был: как считать до конца информацию из сокета, созданного socket_create? Что использовать вместо feof?
Gannibal RTFM: Замечание: socket_read() returns a zero length string ("") when there is no more data to read
Похоже, что тут все просто PHP: while ($out = socket_read($socket, 2048)) { echo $out; } Это снова из RTFM
Огромное спасибо. Вроде разобрался, все даже заработало Отдельно спасибо 440hz, он сам знает за что...