2013-05-07 4 views
2

Я использую облачный хостинг. PHP скрипт запуска время меняется в разностной вертикальной установки шкалы:Как php вычисляет время выполнения?

  • 10s: 128MB - 200Mhz
  • 1s: 2Gb - 3 Ghz

Но я чувствую, что время выполнения в обоих случаях менее 1 сек , потому что я set_time_limit (1) и не показывает ошибку тайм-аута.

Конечно, я использую getrusage() для вычисления времени выполнения. В обоих случаях они меньше 1 с.

Что это такое? Почему для 1-го задания требуется выполнить 10-секундную задачу, не указав ошибку тайм-аута?

<?php 
set_time_limit(1); 
$rustart = getrusage(); 
echo date("m/d/Y h:i:s a", time()).'<br>'; 

//Begin of the task 
$a = 0; 
for ($i=0; $i<6000000; $i++) { 
    $a = $a + $i; 
    if ($i % 1000000 == 0){ 
    echo "$i <br>"; 
    } 
} 
//End of the task 

echo date("m/d/Y H:i:s a", time()); 
echo '<br>'; 

function rutime($ru, $rus, $index) { 
    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000)) 
    ; 
} 
$ru = getrusage(); 
echo "This process used " . rutime($ru, $rustart, "utime") . 
    " ms for its computations<br>"; 
echo "It spent " . rutime($ru, $rustart, "stime") . 
    " ms in system calls<br>"; 
?> 

ответ

1

Кажется, что вы что-то просчитываете в рутиме().

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

$start = microtime(true); 

//your stuff here 

$end = microtime(true); 
$finish = $end - $start; 
echo $finish;