Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт скорости загрузки сраницы


Автор: SeregaGREY 13.1.2012, 09:44
Написал такой скрипт:
Код

<?php
$time_start = microtime(true);

$content = @file_get_contents("http://сайт.ru/httpd_status.txt"); // Считываем содержимое страницы

$filesize = filesize(dirname(dirname(__FILE__))."/services/httpd_status.txt");
$filesize = round($filesize/1000,0); // Переводим в kb и округляем

// Спим некоторое время
usleep(100);

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Ничего не делал $time секунд\n";
echo "Размер файла $filesize Kb\n";
echo "Скорость:".round($filesize/$time,0)." Kb/s\n";
?>


Так вот оно показывает скорость не ту которую показывает http://www.pr-cy.ru/speed_test
Может я что-то не так сделал?

Автор: MoLeX 13.1.2012, 10:19
смотря что вы хотите сделать, получить скорость загрузки страницы у клиента или сервера?! Если второе, то все правильно. Если первое - то вам в сторону flash надо

Автор: SeregaGREY 13.1.2012, 11:48
я хочу скорость загрузки страницы со стороны клиента. выполнить эту операцию на стороне сервера надо. можно как-то?

Автор: Sanchezzz 13.1.2012, 14:02
Код

<?php
$ch = curl_init('http://google.ru/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
curl_exec($ch);

if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);
 echo '' . $info['total_time'] . ' Сек загрузка адреса ' . $info['url'];
}
// Close handle

print "<pre>";
print_r($info);
print "</pre>";

curl_close($ch);
?>


Автор: $дмитрий 13.1.2012, 20:54
Цитата

я хочу скорость загрузки страницы со стороны клиента. выполнить эту операцию на стороне сервера надо. можно как-то? 

Эту операцию нужно выполнять на стороне и по инициативе клиента, иначе никак. Тот сервис по ссылки бред полнейший

Автор: MoLeX 14.1.2012, 08:22
РНР - серверный язык и этим все сказано

Автор: SeregaGREY 14.1.2012, 11:42
Цитата(Sanchezzz @ 13.1.2012,  14:02)
Код

<?php
$ch = curl_init('http://google.ru/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1 );
curl_exec($ch);

if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);
 echo '' . $info['total_time'] . ' Сек загрузка адреса ' . $info['url'];
}
// Close handle

print "<pre>";
print_r($info);
print "</pre>";

curl_close($ch);
?>

Хмм. У меня curl выдавал то же время что и когда я сокетами считывал сайт. Выходит это тоже не поможет.

Автор: MoLeX 14.1.2012, 11:46
Цитата(SeregaGREY @  14.1.2012,  11:42 Найти цитируемый пост)
Хмм. У меня curl выдавал то же время что и когда я сокетами считывал сайт. Выходит это тоже не поможет. 

Вы наши сообщения игнорируете? Сказали же, что такое не возможно сделать на стороне сервера. Нужны языки и технологии для клиента.

Автор: SeregaGREY 14.1.2012, 13:14
Цитата(MoLeX @ 14.1.2012,  11:46)
Цитата(SeregaGREY @  14.1.2012,  11:42 Найти цитируемый пост)
Хмм. У меня curl выдавал то же время что и когда я сокетами считывал сайт. Выходит это тоже не поможет. 

Вы наши сообщения игнорируете? Сказали же, что такое не возможно сделать на стороне сервера. Нужны языки и технологии для клиента.

Но java и flash не выполнить на сервере.

Приблуда http://www.pr-cy.ru/speed_test точно бесполезна? Она в разное время показывает разную скорость загрузки страниц - значит работает?

Автор: MoLeX 14.1.2012, 13:38
Цитата(SeregaGREY @  13.1.2012,  11:48 Найти цитируемый пост)
я хочу скорость загрузки страницы со стороны клиента. выполнить эту операцию на стороне сервера надо. можно как-то? 

на РНР нельзя

Цитата(SeregaGREY @  14.1.2012,  13:14 Найти цитируемый пост)
Приблуда http://www.pr-cy.ru/speed_test точно бесполезна? Она в разное время показывает разную скорость загрузки страниц - значит работает?

вы уверены что он показывает скорость загрузки сайтов со стороны пользователя, а не сервера?

Автор: SeregaGREY 15.1.2012, 09:47
Цитата(MoLeX @ 14.1.2012,  13:38)
Цитата(SeregaGREY @  14.1.2012,  13:14 Найти цитируемый пост)
Приблуда http://www.pr-cy.ru/speed_test точно бесполезна? Она в разное время показывает разную скорость загрузки страниц - значит работает?

вы уверены что он показывает скорость загрузки сайтов со стороны пользователя, а не сервера?

я наверное не так выразился. мне надо узнать не какая скорость у пользователя а с какой скоростью сервер отдаёт контент. curl и сокеты для этого подходят?

Автор: Sanchezzz 16.1.2012, 20:39
Цитата

я наверное не так выразился. мне надо узнать не какая скорость у пользователя а с какой скоростью сервер отдаёт контент. curl и сокеты для этого подходят? 

если контент серверу то да CURL можно, и это более оптимально

смотри $info = http://php.net/manual/ru/function.curl-getinfo.php($ch);
  • CURLINFO_EFFECTIVE_URL - Последний использованный URL
  • CURLINFO_HTTP_CODE - Последний полученный код HTTP
  • CURLINFO_TOTAL_TIME - Полное время выполнения последней операции в секундах.
  • CURLINFO_NAMELOOKUP_TIME - Время разрешения имени сервера в секундах.
  • CURLINFO_CONNECT_TIME - Время, затраченное на установку соединения, в секундах
  • CURLINFO_PRETRANSFER_TIME - Время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах
  • CURLINFO_STARTTRANSFER_TIME - Время, прошедшее от начала операции до момента передачи первого байта данных, в секундах
  • CURLINFO_REDIRECT_TIME - Общее время, затраченное на перенаправления, в секундах
  • CURLINFO_SIZE_UPLOAD - Общее количество байт при закачке
  • CURLINFO_SIZE_DOWNLOAD - Общее количество байт при загрузке
  • CURLINFO_SPEED_DOWNLOAD - Средняя скорость загрузки
  • CURLINFO_SPEED_UPLOAD - Средняя скорость закачки
  • CURLINFO_HEADER_SIZE - Суммарный размер всех полученных заголовков
  • CURLINFO_HEADER_OUT - Посылаемая строка запроса. Для работы этого параметра, добавьте опцию CURLINFO_HEADER_OUT к дескриптору с помощью вызова curl_setopt ()
  • CURLINFO_REQUEST_SIZE - Суммарный размер всех отправленных запросов, в настоящее время используется только для HTTP-запросов
  • CURLINFO_CONTENT_TYPE - Содержимое полученного заголовка Content-Type: , или NULL, если сервер не послал правильный заголовок Content-Type

Автор: SeregaGREY 17.1.2012, 14:15
Потестил и curl и file_get_contents
Данные получаются почти одинаковые, почти одинакоывые похоже потому что сервер в разное время с разной скоростью данные отдаёт.
Но curl как то компактнее выглядит и правильнее, так что остановился на нём.

Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)