Сокеты PHP

Статус
В этой теме нельзя размещать новые ответы.
Возникла проблема с ф-цией file: при использовании ее в таком формате - file('httр://goolgle.ru'); т.е. для получения страницы с сайта скрипт отваливается с "maximum execution time exceed" (вроде так). Проблема возникла после перехода на версию 5.2.5 до этого скрипт работал нормально :( Подскажите в чем дело.
Попробуй в самом начале скрипта поставить set_time_limit(0);
Кстати file() не всегда работает корректно, используй fopen()/fread() .
Либо(т.к. РНР > 5.1) используй file_get_contents(); .
 
file_get_contents работает с версии 4.3.0
 
doktor-FleX: а чего не хочешь заюзать курл? Он более гибкий, настраиваются таймауты, юзер-агенты и тд, да и установлен практически везде.
Интересно, ни разу не слышал о таком, дай ссылочку на него.
 
В обоих случаях эта ошибка:
Fatal error: Call to undefined function file_put_content() in ....
:nezn:

Может я не понял чего. А почему тебя это остановило?

PHP:
function HttpGet($host,$path)
{
    $req = "GET ".$path." HTTP/1.0\r\nHost: ".$host."
Accept: */*;
Connection: Close\r\n\r\n";
    @$s = fsockopen($host, 80);
    if(!$s)
    {
        return false;
    }
    else
    {
        fwrite($s,$req);
        $rez='';
        while(!feof($s))$rez.=@fread($s,$sz+strlen($req));
        return substr($rez,strpos($rez,"\r\n\r\n"));
    }
}

$data=HttpGet('ya.ru','/logo.gif');
if(!$data)
{
    print "Error!";
}
else
{
	$f = fopen(dirname(__FILE__) . '/logo.gif', 'wb');
	list($junk, $data) = explode("\r\n\r\n", $data);
	fwrite($f, $data);
	fclose($f);
}
 
2Captain Fizz
На самом деле сокеты более гибкие - курл надстройка над ними. В плане юзабилити курл, конечно впереди. Только и юзаю, что мультикурл - удобно однако ;)

Кстати, хоть и не про сокеты, но про курл.
Кто нибудь смог заставить работать мультикурл с сокс5-проксиками? В данный момент работает у меня только через http-прокси и сокс4-прокси :confused: А пятый сокс ни в какую :mad: В багтарке php нашел полторагодчную запись об этом баге - сказали, что пофиксили. Версия php последняя, из сборк win-generic. Под никсами не тестил (не успел, так как нет сервака с 5м php)... :(
 
Я организовывал работу через сокс 5 прокси с NTLMN авториции путем ПХП шных сокетов.

ПХП был версии 4.

Всё работало отлично.
 
Через сокеты организовать не проблема. Но хочеться мультикурл юзать - больно уж удобно. Загрузил нужное количество хендлеров и вперед...
Что не хочеться разбираться с н****кирующмися сокетами.. Но видимо придеться, тк этот баг уже полтора года не фиксят... Находил кучу форумов с моим вопросом - но так никто и не ответил :(
 
На самом деле сокеты более гибкие - курл надстройка над ними. В плане юзабилити курл, конечно впереди

2lobzik: сам себе противоречишь - то сокеты более гибкие, то курл по юзабилити впереди. На самом деле это дело привычки - кто-то привык юзать курл, кто-то сокеты. Мне лично думается, что курл гораздо более удобен и функционален. По скорости - есть мнение что сокеты быстрее, но настолько неначительно, что невооруженным глазом это незаметно, да и сетевые таймауты сьедят весь выигрыш по скорости.

Мультикурл - весьма удобная штука, но с существенным недостатком, если зависнет одно соединение, то все остальные завершившись станут, пока зависшее соединение не закроется по таймауту. Поэтому не_блокируемые сокеты для серьезных сетевых приложений - наилучший выход. Об этом уже не раз писалось на умаксе и если мне не изменяет память, на крутопе.
 
2Captain Fizz
Под гибкостью, я понимаю большую возможность реализации тех или иных вещей, по сравнению с курлом. (блин, спать надо идти :D)

Мультикурл хорош тем, что на нем можно быстро написать приложения. В скором планирую переписать одно приложение с курла, на нeблoкрyющиe сокеты - тогда и поделюсь плюсами :) Когда то, кстати писал приложение на сокета, правда на Delphi - посмотрим как здесь получиться =) Правда пока незнаю как распараллелить работу. То ли c pcntl_fork разбираться, возможно сокетами это и не нужно будет...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху