Я использую fsockopen на небольшой cronjob для чтения и анализа каналов на разных серверах. Для самого прошлого это работает очень хорошо. Тем не менее, на некоторых серверах, я получаю очень странные линии в ответ, например:Редкие странные чтения с fsockopen
<language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> 11 <item> <title> 1f July 8th, 2010</title> <link> 32 http://darkencomic.com/?p=2406</link> <comments> 3e
Но когда я открываю канал в, например, блокнот ++, он отлично работает, показывая:
<language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item> <title>July 8th, 2010</title> <link>http://darkencomic.com/?p=2406</link> <comments>
... только чтобы показать отрывок. Итак, я делаю что-то неправильно здесь, или это не поддается контролю? Я благодарен за любую идею исправить это. Вот часть кода, я использую для получения кормов:
$fp = @fsockopen($url["host"], 80, $errno, $errstr, 5); if (!$fp) { throw new UrlException("($errno) $errstr ~~~ on opening ".$url["host"].""); } else { $out = "GET ".$path." HTTP/1.1\r\n" ."Host: ".$url["host"]."\r\n" ."Connection: Close\r\n\r\n"; fwrite($fp, $out); $contents = ''; while (!feof($fp)) { $contents .= stream_get_contents($fp,128); } fclose($fp);
Хех, но мне нравится изобретать колесо! ;) Спасибо за информацию, которая многое помогла! – Ineluki
Ну, заново изобретать колесо может быть интересно - если у вас много времени ;-) ;; пожалуйста :-) –