Проблема с внешними соединениями curl и sock

12
S
На сайте с 26.04.2006
Offline
86
1444

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

Решил проверить как работают внешние соединения при помощи тестового скрипта

<?php


/* Доступные методы загрузки */
@ini_set('allow_url_fopen', 1);
@ini_set('default_socket_timeout',10);
@ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');

function get_remote_file($host,$url){



$res='';

if (function_exists('curl_init')):
$data='';
$full_url='http://'.$host.'/'.$url;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $full_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
$data = curl_exec($curl);
curl_close($curl);
$res.="<b>Загруженная страница с использованием curl</b> $data<br>";
endif;


$fp = @fsockopen($host, 80, $errno, $errstr, 10);
$data='';
if ($fp): //2
$out="GET /$url"." HTTP/1.1\r\n";
$out.="Host: $host\r\n";
$out.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out.="Connection: Close\r\n\r\n";
@fwrite($fp, $out);
$b=0;
$data='';
while(!@feof($fp)):
$s=@fgets($fp,1024);
if ($b) $data.=$s;
if ($s=="\r\n") $b=1;
endwhile;
@fclose($fp);
$res.="<b>Загруженная страница с использованием sock</b> $data<br>";
else:
print "<font color=red>fsockopen ERROR:<br>$errno<br>$errstr<br></font>";
endif;




if (function_exists('file_get_contents') && ini_get('allow_url_fopen') == 1):
$data='';
$full_url='http://'.$host.'/'.$url;
$data = file_get_contents($full_url);
$res.="<b>Загруженная страница с использованием fileget</b> $data<br>";
endif;


return $res;
}

//print "<font color=blue>Доступные методы загрузки:</font><br>";
$res=get_remote_file("ya.ru",'');
print $res.'</code>';

?>

Что подтвердило что данные посредством curl, sock и fileget поступают в течении 1-2 сек. Грешу на то что хостинг не в России. Запускал этот же скрипт на друг хостинга в России, время уходило 0,001-0,05сек

[Удален]
#1

к чему пост то вообще ?)) или рассказать, что пинг до россии из штатов медленный ? ну это и так очевидно, поделите расстояние до штатов на скорость электрона и получите число :)

если добавить еще и сопротивление проводов, то вообще золото! ))

у меня до штатов порядка 250 мс пинг идет.

S
На сайте с 26.04.2006
Offline
86
#2

Сервер в Амстердаме, пинг 50мс, а скрипт генерирует страницу 2сек

[Удален]
#3

ну ответ это не все. попробуй

C:\Documents and Settings\alex>ping -l 1496 ya.ru

Pinging ya.ru [213.180.204.8] with 1496 bytes of data:

Reply from 213.180.204.8: bytes=1496 time=61ms TTL=127

Reply from 213.180.204.8: bytes=1496 time=64ms TTL=127

Reply from 213.180.204.8: bytes=1496 time=60ms TTL=127

Reply from 213.180.204.8: bytes=1496 time=61ms TTL=127

Ping statistics for 213.180.204.8:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

сколько ответ?

bearman добавил 17.06.2008 в 16:54

1496 = размер пакета в 1496 байт(стандартный хттп пакет), 32 байта это фигня, если у тебя 50 на 32 байтах, то на 1496 может быть ооочень много)

S
На сайте с 26.04.2006
Offline
86
#4

Вот что выдает

ping -i 1496 ya.ru

PING ya.ru (213.180.204.8) 56(84) bytes of data.

64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=57 time=51.8 ms

--- ya.ru ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 51.800/51.800/51.800/0.000 ms

[Удален]
#5

-l

L буква ;)

S
На сайте с 26.04.2006
Offline
86
#6

Что то зацикливается, и начинается такая штука

http://i047.radikal.ru/0806/4f/4eed6a58338f.gif

[Удален]
#7

ctrl-c, это не зацикливание ))

просто в линуксе автоматически шлется пинг, пока не выключишь.

для линукса используй такую команду

shopit:~# ping -s 1496 ya.ru

PING ya.ru (213.180.204.8) 1496(1524) bytes of data.

1504 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=55 time=58.7 ms

1504 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=55 time=58.3 ms

1504 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=55 time=57.9 ms

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#8
bearman:
поделите расстояние до штатов на скорость электрона и получите число

Причем здесь скорость электрона? :)

Электромагнитное поле по проводам распространяется со скоростью света. Электрону для этого не обязательно преодолевать все расстояние.

bondarevpipes.com (http://ru.bondarevpipes.com/)
S
На сайте с 26.04.2006
Offline
86
#9

ping -s 1496 81.176.226.188

PING 81.176.226.188 (81.176.226.188) 1496(1524) bytes of data.

1504 bytes from 81.176.226.188: icmp_seq=1 ttl=53 time=62.6 ms

1504 bytes from 81.176.226.188: icmp_seq=2 ttl=53 time=63.1 ms

1504 bytes from 81.176.226.188: icmp_seq=3 ttl=53 time=62.6 ms

1504 bytes from 81.176.226.188: icmp_seq=4 ttl=53 time=62.1 ms

1504 bytes from 81.176.226.188: icmp_seq=5 ttl=53 time=62.7 ms

1504 bytes from 81.176.226.188: icmp_seq=6 ttl=53 time=62.2 ms

1504 bytes from 81.176.226.188: icmp_seq=7 ttl=53 time=65.7 ms

1504 bytes from 81.176.226.188: icmp_seq=8 ttl=53 time=62.2 ms

1504 bytes from 81.176.226.188: icmp_seq=9 ttl=53 time=65.8 ms

1504 bytes from 81.176.226.188: icmp_seq=10 ttl=53 time=62.3 ms

1504 bytes from 81.176.226.188: icmp_seq=11 ttl=53 time=62.8 ms

1504 bytes from 81.176.226.188: icmp_seq=12 ttl=53 time=62.4 ms

--- 81.176.226.188 ping statistics ---

12 packets transmitted, 12 received, 0% packet loss, time 11003ms

rtt min/avg/max/mdev = 62.171/63.089/65.826/1.241 ms

Какие из этого выводы? Кто виноват в тормозах curl и sock, я в этом ни очень силен

[Удален]
#10

сут ьв скорости света, а что там перемещается это уже мелочи :)

ну да, согласен ступил про электроны))

конечно электромагнитное поле.

bearman добавил 17.06.2008 в 18:38

хм, ну пинг теоретически не падает при http запросах. насколько я понимаю curl и sock хоть и разные вещи но по скорости они оба зависят только от скорости и ширины канала.

bearman добавил 17.06.2008 в 18:39

если есть доступ к shell попробуйте с помощью lynx побродить по яндексу. и посмотрите быстро или нет ))

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий