Переменная пустая, а после расчета не должна быть пустой. Как это сделать правильно? - PullRequest
1 голос
/ 02 февраля 2011

представьте, я хочу рассчитать скорость загрузки, а затем повторить это рассчитанное значение. Тем не менее ... Я хочу повторить это значение не в конце страницы, в нижней части HTML, но где-то в середине HTML:

    $s = microtime(true); 

<html><head>...</head><body>   
     echo $laadtijd . " seconds";   //echo value, after calculation completed
</body></html>  

    $e = microtime(true);  
    $laadtijd = round($e - $s, 3);  //fill in the value

Однако теперь на странице отображается пустое значение для $ laadtijd, пока оно вычислено! Как это решить?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Вы можете сделать это, выполнив:

<?php

    // Start time
    $s = microtime(true);

    // Holds the output buffer
    ob_start(); 
    echo '
         <html>
              <head>...</head>
              <body>....
              TIME_CALCULATED seconds.
              </body>
        </html>'; // TIME_CALCULATED will be our flag

    // Get the output
    $output = ob_get_contents();
    ob_end_clean();

    // End time
    $e = microtime(true);
    $laadtijd = round($e - $s, 3);

    // Echo the output
    echo str_replace('TIME_CALCULATED', $laadtijd, $output);

?>

Это просто содержит выходной буфер со всем содержимым и заменяет наш флаг TIME_CALCULATED в буфере временем.

Дляподробнее читайте Функции управления выводом в руководстве по PHP.

0 голосов
/ 02 февраля 2011

КАК ВЫ МОЖЕТЕ РАСЧЕТАТЬ СКОРОСТЬ НАГРУЗКИ ВСЕЙ СТРАНИЦЫ, ЕСЛИ ЭТО НЕ ЗАГРУЖЕНО? ВЫ рассчитали $ laadtijd где-то ближе к концу, тогда как вы можете повторить его в середине ??? используя microtime невозможно быть точным со временем, затраченным на загрузку страницы (хотя я не уверен)

<?php
$s = microtime(true);
?>
<html><head>...</head>
<body>
show you entire page
<?php
$e = microtime(true);
$laadtijd = round($e - $s, 3);//calculate first then echo
echo $laadtijd . " seconds";
?>
</body></html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...