Показать сообщение отдельно

  #30  
Старый 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($host80$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($fsock0);
         
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 - работало. С неблокирующими лучше?
 
Ответить с цитированием