Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сокеты 
V
    Опции темы
wsr
Дата 3.1.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Привет всем!
У меня такая проблема:
Соединяюсь с сервером => посылаю запрос => читаю ответ!
дальше опять посылаю запрос, и опять читаю ответ, и вот как раз после первого получения ответа больше ничего не приходит!

Код

<?php
$header  = "Accept: */* \r\n";
$header .= "Host: samplesite.ru \r\n";

$fp = fsockopen ("site.ru", 80);
for ( $i=0; $i<100; $i++ ):
     $head  = "GET /index.php?id=".$i." HTTP/1.1\r\n";
     $head .= $header;

     fwrite ( $fp, $head );
     $data = "";
     while ( !feof ( $fp ) ) {
              $data .= fgets ( $fp, 128 );
     }

     if ( eregi ("Привет", $data) ) :
        $file = fopen ("site.txt", "a+");
        fputs ($file, $i."\n");
        fclose ($file);
     endif;
endfor;
fclose($fp);
?>


Может все дело в заголовках! Может чего-то нехватает!??
Помогите плизз!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 3.1.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



fread попробуй.
PM ICQ   Вверх
wsr
Дата 4.1.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Попробовал!

Это тоже самое, что и каждый раз при новом запросе открывать сокет, и закрывать его!

Но чтение данных используя fread работает быстрее, чем открытие сокетного соединения!


Это сообщение отредактировал(а) wsr - 4.1.2006, 00:05
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 4.1.2006, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



wsr что за бред?
Я тебе про:
Цитата(wsr @ 3.1.2006, 22:33)
$data .= fgets ( $fp, 128 );

Где ты каждый раз читаешь строку из 128 символов. А если в ней больше?
PM ICQ   Вверх
wsr
Дата 4.1.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Код

while ( !feof ( $fp ) ) {
              $data .= fgets ( $fp, 128 );
     }


А не пробовал рассмотреть код полностью?
Мы дописываем каждый раз к $data данные которые прочитали, но порциями по 128 байт!
И так пока не прочитаем все данные!
Так что это не бред!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 4.1.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(wsr @ 4.1.2006, 18:52 Найти цитируемый пост)
Мы дописываем каждый раз к $data данные которые прочитали, но порциями по 128 байт!
И так пока не прочитаем все данные!
Так что это не бред!

Мы дописываем каждый раз первые 128 байт каждой раз новой строки...
PM ICQ   Вверх
wsr
Дата 7.1.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



В мане читал! Может я не в том мане конечно читал, но там ни сказано, что fgets читает N байт и даже если не достиг конца строки переходит на другую!
Ну все равно! Поствил я большую длинну! И эффект такой-же!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 7.1.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 5
Всего: 261



Цитата(wsr @ 7.1.2006, 12:56 Найти цитируемый пост)

Ну все равно! Поствил я большую длинну!

Либо убери ее (длину) нафиг, либо используй fread. Т.к. даже большая длина не даст тебе гарантии, что ты прочтешь ВСЮ информацию.

Попробуй перед while'ом поставить fseek( $fp , 0 );
PM ICQ   Вверх
wsr
Дата 7.1.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Warning: fseek(): stream does not support seeking

Но и без fseek все pаработало!
Использую вместо fgets fread ($fp, 100000000);

Я просто знаю, сколько мне инфры придет! И это число заведомо больше!
Теперь не надо все время открывать сокетное соединени!

Спс!

Это сообщение отредактировал(а) wsr - 7.1.2006, 17:29
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.