
22.01.2010, 01:01
|
|
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
Провел на форуме: 2459557
Репутация:
606
|
|
Хорошая статья.
А формы рисовать для бамкомпилера нужно вручную ? Нет каких либо тулз, как IDE для С++, delphi и прочих ?
Сообщение от Pashkela
curl не пойдет для таких целей - кури неблокируемые сокеты, или задавай конкретные вопросы, что именно не получается с сокетами, тогда будет конкретный ответ (куски кода обязательны, а также подробное описание той задачи, которую надо выполнить, а не общие твои домыслы)
PS: sleep - не выход, выполнение sleep есс-но влияет на работу всего приложения, т.е. если юзать sleep - то, пока пауза, ничего нажать не получиться. Тем более 10 секунд.
Вот функция с неблокируемыми сокетами которая подойдет для парсинга любой URL (кроме https):
PHP код:
function sql($url) {
$patern = "/^(http:\/\/)?([^\/]+)/i";
$source_host = preg_match($patern, $url, $rezz);
$host = $rezz[2];
$url1 = "GET $url\n"; // Тут GET можно поменять на POST, к примеру
$responce = "";
$timeout = 30; // На Ваше усмотрение
$fsock = fsockopen($host, 80, $errnum,$errstr,$timeout);
if ($fsock) {
$headers = $url1;
$headers .= "Host: $host\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
stream_set_blocking($fsock, 0);
stream_set_timeout($fsock, $timeout);
while (!feof($fsock)) $responce .= fread($fsock,4096);
fclose ($fsock);
}
return $responce;
}
пример вызова:
PHP код:
$a = sql("http://rambler.ru");
А зачем кстати нужны эти неблокирующие сокеты? Какие премущества? Я всегда юзал тупо fsockopen, fwrite, while(!feof, fgets - работало. С неблокирующими лучше?
|
|
|