Тест скорости ТОЛЬКО на пхп. (без яваскрипта)

klax

Новичок
Тест скорости ТОЛЬКО на пхп. (без яваскрипта)

Вобщем ситуация такая:
есть тест скорости типа speed,yoip,ru (вместо запятых поставить точки)
хочу сделать нечто такое-же, но без яваскриптов.
Но проблема в том, что пхп выполняется моментально, а невидимый текст выводится гораздо медленнее (зависит от скорости канала).

Как сделать задержку в пхп, чтобы он дальше не выполнялся, пока пхп не прогрузится до определенного места?

Спасибо.
 

klax

Новичок
У меня была такая мысль.
$start=microtime(); //взять время начала работы
{
вывод невидимого текста (<!-- bla-bla-bla -->) нужного объема
}
$stop=microtime(); //взять время конца работы
$raz=$stop-$start; //получаем разницу во времени
//рассчитываем скорость.

Но все дело в том, что он выполняется моментально и на текст объёмом 5 мбайт затрачивается меньше секунды.
А выводится в браузер он ОЧЕНЬ долго.
Т.е. перед взятием времени окончания нужно как-то остановить его до вывода всего текста. А как это сделать (и возможно-ли вообще) я не знаю... :((
 

kvf77

Red Devil
Вы сначала определитесь какое время вам нужно. Если время загрузки страницы - то по сути бессмысленное занятие, если время ее генерации, то тут вам пофиг должно быть сколько она выводилась пользователю.
 

klax

Новичок
Мне нужно узнать скорость канала интернет.
А это можно узнать, определив время, за которое к человеку прогрузится файл.
Но скрипт пхп выполняется моментально, и поэтому время показывает чуть меньше секунды. Хотя прогружается он гораздо медленнее.
 

pilot911

Новичок
ну и что ? к чему все это ? :)

если напрягает, что много текста и страница долго остается белой - измените верстку, сделайте ее на div'ах

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

x-yuri

Новичок
klax клиент не сообщает серверу, когда он загрузил страницу (если его об этом не попросить). Этого тебе не хватает и тут без javascript, думаю, не обойдешься
 

DIS

Новичок
дейстительно не обойтись без чего-нибудь работающего на клиенте.
 

dimagolov

Новичок
если отключить ob_, то пхп будет ждать освобождения буфера апача перед выводом очередной порции и что-то вроде скорости доставки клиенту можно будет оценить (то есть надо будет сравнивать скачки времени при выводе). Проблема в том, что размер буфера апача мы не знаем, но приблезительно сможем оценить вместе с общей скоростью отдачи по кол-ву задержек во время вывода и зная общий объем данных.
 

x-yuri

Новичок
dimagolov а можешь поподробнее рассказать об идее сравнения скачков времени? Имеется в виду оценивать среднюю скорость не по всем данным, а по отдельным фрагментам и найти максимум? Тогда лучше сначала определить размер буфера Apache, а потом выдавать куски размером с буфер
Кроме того, мне кажется полученная величина будет иметь мало общего со скоростью канала - это будет скорость отдачи информации apache'ем
 

dimagolov

Новичок
x-yuri, клиент перед тем, как забрать следующий пакет должен подтвердить предидущий. то есть если есть большой кусок данных, который надо пропихнуть по HTTP, то он не улитит мгновенно клиенту, а будет отдаваться отдельными пакетами и пока не подтвержден предидущий ждем и не отправляем следующий. если работает связка пхп + апач, то все в итоге ждет в буферах, т.е. в памяти. только если есть ob_, то код пхп, который делает вывод выплевывает все в буфер ob_ и завершается, отдав "все", а вывод ob_ в апач уже курит бамбук и ждет пока клиент примет все. если ob_ нету, то скрипт засыпает при заполнения буфера апача, пока апач не подтвердит что буфер чист и можно слать дальше. в итоге код php будет исполняться скачками, вывод в тот момент, когда буфер апача полон, будет занимать секунды, а когда пуст - сотые.

п.с. можно на это не обращать внимание и считать общее время вывода контента.
 

klax

Новичок
Вот мне как раз и нужно посчитать общее время вывода контента без использования яваскрипта.
Но с ob_ я пока не работал.

dimagolov, можешь кинуть несколько линок с примерами?
Буду весьма признателен... :))
 

dimagolov

Новичок
klax, да что тут кидать? смотрим, чтобы не было включен буфер автоматом, потом через [m]microtime[/m] смотрим за какое время ушел на клиента тестовый объем и под конец выводим эту инфу.
 
Сверху