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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> gzip сжатие и вывод информации 
V
    Опции темы
savmp
Дата 18.1.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Помогите, пожалуйста!
Я наткнулся на сайт в котором есть gzip сжатие страниц, а также скрипт который показывал за сколько секунд генерировалась эта страница… а самое главное это то, что сайт показывал в процентах на сколько сжата страница, выводил инфо о реальном размере страницы в Кb и в жатом (Кb)… также сайт суммировал трафик… слаживая результаты сжатой страницы…

Помогите реализовать такой скрипт, я только начинаю изучать PHP и для меня это очень трудно…
Буду рад всем советам!

PM MAIL ICQ   Вверх
savmp
Дата 18.1.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Даже на этом сайте в самом низу есть частичка нужного мне скрипта:

[ Время генерации скрипта: 1.2595 ]   [ Использовано запросов: 29 ]   [ GZIP включён ]
PM MAIL ICQ   Вверх
savmp
Дата 18.1.2010, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Помогите разоббаться с приведённым ниже скриптом...
В нём вроде ошибка но какая я не пойму... этот скрипт включал сжати страниц и в куке подсчитывал трафик!
Помогите запустить скрипт... и если возможно то и написать комментарии к приведённому ниже скрипту.

<?
Error_Reporting(E_ALL & ~E_NOTICE);
Error_Reporting (ERROR | WARNING);

session_name("SESID");
session_start();

ob_start('ob_gzhandler');

$Contents = ob_get_contents();
$gzib_file = strlen($Contents); 
$gzib_file_out = strlen(gzcompress($Contents,3));
$gzib_pro=round(100-(100/($gzib_file/$gzib_file_out)),1);
$traf = $gzib_file_out + $_SESSION['traf'];
$_SESSION['traf'] = $traf;
$traf_kb = round($traf / 1024, 1);

echo 'GZIP сжатие включено - трафик: '.$traf_kb.' KB';
?>
PM MAIL ICQ   Вверх
Котокобра
Дата 18.1.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну подсчитать время выполнения скрипта не сложно. Надо засечь время в самом начала скрипта и снять значение в самом конце. Разницу вывести.

Объем страницы тоже можно посчитать, если запихнуть ее в переменную и померить ее длину.

А вот насчет архивации не понятно. Браузер не производит разархивирование, клиенту отправляется сверстанный html.
Если только передача по xml, которая разархивируется на клинетской машине с помощью скрипта.
PM MAIL   Вверх
savmp
Дата 18.1.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Цитата

Ну подсчитать время выполнения скрипта не сложно. Надо засечь время в самом начала скрипта и снять значение в самом конце. Разницу вывести.

Объем страницы тоже можно посчитать, если запихнуть ее в переменную и померить ее длину.


это всё просто на словах... а вот как программу написать это не понятно...
PM MAIL ICQ   Вверх
Котокобра
Дата 18.1.2010, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



savmp, 
это прикол такой, да?

Код

<?php

$time_start = microtime(1);

$page_header = <<< HERE
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Выводим инфо о выводе</title>
</head>

<body>

HERE;


$page_body = <<< HERE
ацикий кодинг и все такое <br /><br />

HERE;


$page_footer = <<< HERE
</body>
</html>

HERE;


$weight = strlen($page_header) + strlen($page_body) + strlen($page_footer);

$time_end = microtime(1);
$time = $time_end - $time_start;
$info_add = "Страница весом $weight байт ничего не делала $time секунд.\n";

print $page_header;
print $page_body;
print $info_add;
print $page_footer;

?>

PM MAIL   Вверх
savmp
Дата 18.1.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



А как выглядит отдельно код генерации страницы?
И как выводить информацию не в виде 3.00407409668E-5 а в виде (Генерация страницы: 0.0168 сек.)


И в этом скрипте указывается не сумма трафика страниц а просто размер файла...
Не легче узнать размер страницы через такой скрипт:

<? $filesize = filesize ('index.php'); $filesize = $filesize / 1024; echo round ($filesize, 2); ?> Kb
PM MAIL ICQ   Вверх
Котокобра
Дата 18.1.2010, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(savmp @  18.1.2010,  22:28 Найти цитируемый пост)
А как выглядит отдельно код генерации страницы?


print "hello";

будет выведено "hello". Страница же подразумевает всякие служебные теги, типа хидера, контента, стилей и др.
Мы их можем выводить в поток между строк скрипта, либо сначала сложить в переменную, потом разом вывести, как и было проделано. То бишь

$htm = "hello";
print $htm;

эквивалентно print "hello";

пояснение:
print <<< HERE
hello
HERE;

тоже самое, эквивалентно print "hello";

Соответственно, "код генерации страницы" это условное обозначение, означающее тот контент, который будет выведен в качестве содержимого страницы. Это вывод осуществляется функцией print. Т.е. то, что передано функции принт, получит бразузер, и ничего другого.


Цитата

3.00407409668E-5

E-5 означает -5 степень, т.е. это должно было бы выглядить так:
0.0000300407409668

Столько нулей перед значащими цифрами обычно не выводятся, запись сокращается до того вида, который был представлен. Чтобы это изменить в отображении, надо еще что-нибудь писать. Ну или покопать справочники.


На счет трафика Вы верно описали: она должна заноситься в куки, и суммироваться.
filesize ('index.php') - это размер файла скрипта, а не контента, который он формирует.
Например, цикл

for ($i=0;$i<1000;$i++){
  $cnt .= "1";
}

занимает 43 байта, а содержание переменной на выходе из цикла составит 1000 байт.

Ну вроде все по вашим вопросам...

Это сообщение отредактировал(а) Котокобра - 18.1.2010, 22:57
PM MAIL   Вверх
savmp
Дата 18.1.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



А как реализовать скрипт примерно с такой идеей:

1. определяем размер страницы
2. включаем GZIP сжатие на странице и определяем какой размер у принятых сжатых файлов
3. выводим информацию (размер страницы) и (размер принятых сжатых файлов)
4. определяем процент сжатия страницы методом (результат размера принятых сжатых файлов) умножаем на 100 и делим на (результат размера страницы) получаем с округлением до 2 знака результат в процентах.
5. (результат размера принятых сжатых файлов) заносим сессию или в кук (я не знаю как лучше) а при дркгом обновлении страницы или переходе на другую мы (результат размера принятых сжатых файлов) прибавляем к той цифре которая у нас в куке или сессии и выводим результат в виде: Ваш трафик: 12**7 Kb


Мне просто мои знания php не позволяют такой скрипт написать :-(
PM MAIL ICQ   Вверх
Котокобра
Дата 18.1.2010, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не работал со сжатием. 
Видимо, контент передается архиватору, и клиенту выдается сразу сжатая страница.
Наверное, ее размер вычисляется также, через длину строки, а вот функцию, которая осущствляет gzip-сжатие, я не знаю.
Так что пока у меня все smile
PM MAIL   Вверх
savmp
Дата 18.1.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



ob_gzhandler()

предназначена для использования в качестве callback-функции для ob_start(), чтобы облегчить отправку gz-кодированных данных web-браузерам, поддерживающим сжатие web-страниц. 

Прежде чем ob_gzhandler() отправит сжатые данные, она определяет, какой тип кодирования содержимого принимает браузер ("gzip", "deflate" или вообще никакое), и возвратит его содержимое соответствующим образом.

Поддерживаются все браузеры, отправляющие корректную шапку/header о том, что они принимают сжатые web-страницы.
PM MAIL ICQ   Вверх
Котокобра
Дата 18.1.2010, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



savmp, ну а где тот файл, который подключается? Идея-то конечно проста, сложно разобраться в подключаемых функциях.
PM MAIL   Вверх
savmp
Дата 18.1.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Скрипт генерации страницы я думаю пойдёт и такой...


вставляем это в самое начало страницы:

<? $start = microtime (); $start_array = explode (" ",$start); $start = $start_array[1] + $start_array[0]; ?>



а это вставляем это в самый конец страницы:

<? $finish = microtime (); $finish_array = explode (" ", $finish); $finish = $finish_array[1] + $finish_array[0]; $time = $finish - $start; printf ("Генерация страницы: %f SEC", $time); ?>



результат примерно такой:

Генерация страницы: 0.001560 SEC

Добавлено через 2 минуты и 56 секунд
Блин....
Я просто жалею, что мои знания php не позволяют мне писать скрипты! :-(

Мне нужен этот скрипт....

Цитата

1. определяем размер страницы
2. включаем GZIP сжатие на странице и определяем какой размер у принятых сжатых файлов
3. выводим информацию (размер страницы) и (размер принятых сжатых файлов)
4. определяем процент сжатия страницы методом (результат размера принятых сжатых файлов) умножаем на 100 и делим на (результат размера страницы) получаем с округлением до 2 знака результат в процентах.
5. (результат размера принятых сжатых файлов) заносим сессию или в кук (я не знаю как лучше) а при дркгом обновлении страницы или переходе на другую мы (результат размера принятых сжатых файлов) прибавляем к той цифре которая у нас в куке или сессии и выводим результат в виде: Ваш трафик: 12**7 Kb


сейчас и на будущее нужен...
PM MAIL ICQ   Вверх
IgorIV
Дата 19.1.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Блин ...
$time_start = microtime(true);
Безо всякого explode. Я надеюсь не с 4 версией работаешь.
Честно говоря сомневаюсь что возможен подсчёт процентов сжатия. Как подсчитать длину несжатой странички?  smile 
PM MAIL   Вверх
savmp
Дата 19.1.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



IgorIV спасибо, что подсказал: $time_start = microtime(true);

Я просто плохо разбираюсь в PHP

кстати я нашёл сайт на котором отображается процент сжатия страницы

выглядит это так:

Сжатие: 66.2%
0.0073 сек.


в самом низу сайта!

вот этот сайт?

http://visavi.net/index.php?

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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