есть отличия использования fopen и socket - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64516.7794
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 22.11.2007, 19:56   #1
ontario
Senior Member
 
Регистрация: 31.08.2007
Сообщений: 108
Бабло: $10460
По умолчанию есть отличия использования fopen и socket

пхп - кто разбирается, подскажите - есть ли отличия использования fopen и socket:

Нужно через сокеты сделать, но ...

1 делаю так
$fp = fsockopen($url_info[host] и тд
fwrite($fp, заголовки
while ( (!feof($fp)) читаем fgets($fp, 1024);

2 и так
fopen($url,"rb")
while(true): читаем fread($handle,1024);

... - скорость работы второго варианта у меня в - 8 раз выше первого варианта (!) + нагрузку на сервер даёт - почему так происходит?
Вроде бы это одно и тоже - инфы про отличия в данном варианте не нашёл - кто знает - скажите в чем может быть дело или где поискать\почитать
ontario вне форума  
Старый 22.11.2007, 20:34   #2
analgin
Страдаю приступами необоснованных комментов.
 
Аватар для analgin
 
Регистрация: 07.06.2007
Адрес: Киев
Сообщений: 0
Бабло: $520
Отправить сообщение для analgin с помощью ICQ Отправить сообщение для analgin с помощью Skype™
По умолчанию

fopen работает при определенной конфе пыха и использует те же сокеты, но эта директива у некоторых хостеров отключена.
вообще посмотри через SSH сколько исполняется скрипт
time wget http://url/1.php
time wget http://url/2.php

и юзай курл
analgin вне форума  
Старый 23.11.2007, 04:18   #3
alexf2000
Senior Member
 
Аватар для alexf2000
 
Регистрация: 04.04.2007
Сообщений: 266
Бабло: $3333
По умолчанию

+1 за курл. Вообще вопрос сам по себе странный, если это не сканнер портов, то абсолютно пофиг что работает "быстрее". Время внутри обеих функций всё равно жрётся на ресолв хоста.
alexf2000 вне форума  
Старый 23.11.2007, 08:49   #4
drocher
Member
 
Аватар для drocher
 
Регистрация: 23.07.2007
Сообщений: 40
Бабло: $540
По умолчанию

curl юзать только если ssl, в остальном очень криво портировано на php.
Нет ещё поддержки даже простейших базовых опций, например что-бы принимать только часть документа. приходится тянуть весь файл каждый раз, ну или плясать с бубном... хотя это нигде не документированно по человечески.

А то что первый вариант у тебя медленный, это к fsockopenу никакого отношения не имеет. Посмотри что у тебя ниже, feof выкинь.. сначала, примеры посмотри как делают в зависимости от целей.
drocher вне форума  
Старый 24.11.2007, 03:17   #5
ontario
Senior Member
 
Регистрация: 31.08.2007
Сообщений: 108
Бабло: $10460
ТС -->
автор темы ТС По умолчанию

Цитата:
fopen работает при определенной конфе пыха и использует те же сокеты, но эта директива у некоторых хостеров отключена.
вообще посмотри через SSH сколько исполняется скрипт
time wget http://url/1.php
time wget http://url/2.php

и юзай курл
(сервер свой - настраиваю сам)

вот про это и вопрос - время работы засекается внутри самого скрипта - для чистоты попробовал и так - время работы также отличается в 8+ раз

знаю, что такого не должно быть - сокет он есть сокет, но и факт остается фактом - нагрузка выше и скорость ниже, поэтому прошу помощи - из за чего такое может быть помочь выяснить

курл использую на задачах, где не нужен особый контроль за выполнением процесса + еще там, где переходы по страницам есть

Цитата:
+1 за курл. Вообще вопрос сам по себе странный, если это не сканнер портов, то абсолютно пофиг что работает "быстрее". Время внутри обеих функций всё равно жрётся на ресолв хоста.
это не сканер портов - парсинг страниц в 500 потоков - время выполнения и нагрузка играют роль - отличие в 8 раз при больших объемах - это сутки и 8 суток - разница есть

Цитата:
curl юзать только если ssl, в остальном очень криво портировано на php.
Нет ещё поддержки даже простейших базовых опций, например что-бы принимать только часть документа. приходится тянуть весь файл каждый раз, ну или плясать с бубном... хотя это нигде не документированно по человечески.
поддерживаю такое мнение - над сокетами контроль выше

Цитата:
А то что первый вариант у тебя медленный, это к fsockopenу никакого отношения не имеет. Посмотри что у тебя ниже, feof выкинь.. сначала, примеры посмотри как делают в зависимости от целей.
если можно поподробнее про выкинуть феоф - так же тру проверку поставить?
и какие примеры посмотреть - довольно долго изучал, прежде чем спросить - может есть, что еще просмотреть можно ...

очень нужно на сокетах это сделать с той же скоростью, что и с эфопен ... даже не думал, что с такой проблемой столкнусь, на тестах эфопен использовал - нид хелп ...
ontario вне форума  
Старый 25.11.2007, 00:05   #6
sevian
Senior Member
 
Регистрация: 29.08.2007
Сообщений: 168
Бабло: $1930
Отправить сообщение для sevian с помощью ICQ
По умолчанию

вот про резолв интересно - если на серваке бинд кэширующий поставить, ускорит ли это работу?
надо бы проверить.
sevian вне форума  
Старый 25.11.2007, 04:28   #7
ontario
Senior Member
 
Регистрация: 31.08.2007
Сообщений: 108
Бабло: $10460
ТС -->
автор темы ТС По умолчанию

Цитата:
вот про резолв интересно - если на серваке бинд кэширующий поставить, ускорит ли это работу?
надо бы проверить.
это ускорит, но в данном случае нужна именно "живая" проверка - некоторые страницы динамические

Цитата:
Сообщение от drocher Посмотреть сообщение
... feof выкинь...
огромное спасибо тебе за это
проблема решена - скрипт ждал именно феоф и вис на время таймаута + запрос времени для таймаута - вот и нагрузка лишняя, даже не обратил бы на это внимания, респект
ontario вне форума  
Старый 25.11.2007, 04:36   #8
ontario
Senior Member
 
Регистрация: 31.08.2007
Сообщений: 108
Бабло: $10460
ТС -->
автор темы ТС По умолчанию

ну и еще вопросик для развития - есть ли отличия использования фрид и фгетс при работе с сокетами? (я не заметил, но интересно)
ontario вне форума  
Старый 25.11.2007, 23:46   #9
proc3nt
el patron
 
Аватар для proc3nt
 
Регистрация: 17.04.2007
Сообщений: 486
Бабло: $2147483647
Отправить сообщение для proc3nt с помощью ICQ
По умолчанию

Цитата:
Сообщение от ontario Посмотреть сообщение
ну и еще вопросик для развития - есть ли отличия использования фрид и фгетс при работе с сокетами? (я не заметил, но интересно)
Различия есть, прежде всего fread в основном используется для чтения бинарных данных, а fgets для чтения строк
__________________
15+ лет на гофаке, хранитель традиций, летописец, легенда
proc3nt вне форума  
Старый 26.11.2007, 05:28   #10
drocher
Member
 
Аватар для drocher
 
Регистрация: 23.07.2007
Сообщений: 40
Бабло: $540
По умолчанию

http://php.russofile.ru/ru/translate/unsort/optimizing/
первый результат в гугле
drocher вне форума