Реклама на сайте Advertise with us

Есть ли способ измерить скорость выполнения php?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

нет судьбы

С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204


Передовик Master-X (16.07.2011) Передовик Master-X (16.10.2011) Передовик Master-X (01.11.2011) Передовик Master-X (16.11.2011) Передовик Master-X (01.01.2012) Ветеран трепа Master-X (16.02.2012)
Ссылка на сообщениеДобавлено: 24/07/07 в 15:00       Ответить с цитатойцитата 

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

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 24/07/07 в 15:27       Ответить с цитатойцитата 

отдача страницы и время выполнения пхп - вещи совершенно разные.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 28.02.03
Сообщения: 8532
Рейтинг: 1609

Ссылка на сообщениеДобавлено: 24/07/07 в 16:03       Ответить с цитатойцитата 

несовсе понел тебя но если тебе на до сделать задержку то
вот вариант

Код:
<?php
echo "Первая часть";
flush();
sleep(10); // задержка 10 секунд
echo "Вторая часть";
?>

Сдам место в подписи. Предложения в личку.

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 24/07/07 в 16:20       Ответить с цитатойцитата 

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

если так, то примерно решить проблему можно так:
скрипт2 перед началом работы делает файл result.html (к примеру)
и записывает туда что-нибудь, типа "start working"
скрипт1 читает раз в 4-5 сек этот файл, к примеру file_get_contents("http://server2/work/result.html") и если там есть строчка "start working", засыпает на 4-5 секунд пока не отработает скрипт2 и не положит результат в result.html

если не так, то я хз как icon_smile.gif

май пен рай

0
 



С нами с 27.06.07
Сообщения: 289
Рейтинг: 247

Ссылка на сообщениеДобавлено: 24/07/07 в 16:23       Ответить с цитатойцитата 

Начало отработки скрипта можно зафиксировать в php, например так:
Код:
list($usec, $sec) = explode(" ", microtime());
$start_time = ((float)$usec + (float)$sec);


далее генерится страница, на странице JavaScript с переменной значением которой становится $start_time:

Код:
<script>
  var starttime = <?php echo $start_time; ?>;
</script>


далее, после прогрузки страницы, нужно вызвать метод OnLoad(), который вычитает из текущего времени, время начала работы:

Код:
<script>
window.unload = function {
   var current_time = new Date();
   var interval = current_time-starttime;
   alert(interval);
}
</script>


В результате получите искомое. Это конечно все очень примерно, но идея я думаю понятна, эксперементируйте. Ещё onLoad не всегда вызывается реально в самом конце, иногда картинки могут быть непрогружены, но это так же обходится, стоит только погуглить.

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

Ссылка на сообщениеДобавлено: 29/07/07 в 00:13       Ответить с цитатойцитата 

в консоли можно проверить просто
time php skript.php

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

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 29/07/07 в 00:28       Ответить с цитатойцитата 

Угу. Измерять реальное время можно только в консоли. К тому же time выдаст не совсем то время какое имеется ввиду по моему?

Юникс делает так, что время выполнения скрипта не будет меньше чем время загрузки страницы на клиенте.

Соотв. на клиенте с быстрым каналом твой скрипт будет выполняться быстрее.

На медленном и глючном канале твой скрипт будет долго спать icon_smile.gif

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

Ссылка на сообщениеДобавлено: 31/07/07 в 15:20       Ответить с цитатойцитата 

Pentarh писал:
К тому же time выдаст не совсем то время какое имеется ввиду по моему?

time выдаст the total time elapsed, the time used to execute the utility process and the time consumed by system overhead.
т.е. грубо говоря time выдаст сколько секунд прошло с момента запуска до момента завершения программы
и сколько ресурсов сожрала(например если проц сильно нагружен то программе долго могут не давать выполняться на проце т.е. время выполнения увеличится, но количество использованых ресурсов в теории не изменится по сравнению с не нагруженным процом)
Pentarh писал:
Юникс делает так, что время выполнения скрипта не будет меньше чем время загрузки страницы на клиенте.

если я правильно знаю русский язык то "не будет меньше" равносильно "будет больше или равно"
итого фраза будет звучать так " время выполнения скрипта будет больше или равно чем время загрузки страницы"
если ты подразумеваешь под "время загрузки страницы" время которое прошло с момента отсылки запроса браузером страницы скрипта до момента получения этим браузером результата работы скрипта, то ты не прав так как "время загрузки страницы" в этом случае складывается с
1. времени которое прошло с момента отправки пакета с запросом скрипта до момента его получения
2. время выполнения скрипта
3. время с момента начала отдачи результата на сервере до момента конца приема этого результата на клиенте

если же ты под "время загрузки страницы" подразумеваешь время с момента начала отдачи результата на сервере до момента конца приема этого результата на клиенте, то тут ты снова не прав, так как время исполнения скрипта на сервере НЕ зависит от интернет канала, а ты связываешь эти 2 действия хотя они полностью независимы одно от другого
хотя визуально на плохом канале кажется что именно скрипт выполняется долго на самом деле это не так это инет канал медленно передает результаты

p.s. же если пхп программа запрашивает какие-то данные с инета для обработки то качество канала влияет на время выполнения программы так как от этого зависит через какое время она получит данные

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 31/07/07 в 15:30       Ответить с цитатойцитата 

Ну если ты такой начитаный, то лови вопрос.

Есть сервер скажем 512 Мб мозгов, столько же свапа.

Есть апач+мод_пыхпых4

Есть скрипт

Код:
<?
$f=fopen('512mb_file.dat','r');
while($buff=fread($f,40960)) {
echo $buff;
}
fclose($f);
?>


Т.е. скрипт выплевывает файл 512 Мб.

К скрипту последовательно в течении небольшого интервала времени обратились 10 клиентов с несущественной скоростью закачки. Скажем, 256 Кбит/сек.

Вопрос: сервер ляжет от нехватки памяти?

По твоему получается что сервер ляжет. Потому что все скрипты отработают быстро и выплюнут 5 гигабайт прежде, чем клиенты закачают какую то малую часть этого объема. А если не ляжет, то куда эти 5 гигабайт денутся? Клиенты их еще не закачали.

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

Ссылка на сообщениеДобавлено: 31/07/07 в 16:36       Ответить с цитатойцитата 

не ляжет, даже свопить не будет.
никуда не денутся останутся на винте.
апачь перейдет в режим Sending Reply и будет отдавать кусками указаными в пхп в output_buffering
время выполнения на процесоре не изменится, как ты ни крути при самых любых каналах.

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 31/07/07 в 16:41       Ответить с цитатойцитата 

Я говорю за время выполнения вообще. Скрипт будет выполняться (читай: висеть в памяти) до тех пор пока клиент полностью не скачает его вывод. (либо не порвет связь)

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

Ссылка на сообщениеДобавлено: 31/07/07 в 17:00       Ответить с цитатойцитата 

с "висеть в памяти" при отдаче результата абсолютно согласен
если же он "будет выполняться" то его апачь убьет по таймауту.
разница есть...

ладно проехали

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »