2

クラウドホスティングを使用しています。PHP スクリプトの実行時間は、垂直スケール設定の違いによって異なります。

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

しかし、私は set_time_limit(1) を設定し、タイムアウトエラーを表示しないため、どちらの場合も実行時間は 1 秒未満に感じます。

確かに、実行時間の計算には getrusage() を使用します。どちらの場合も、1 未満です。

この動作は何ですか? タイムアウトエラーを表示せずに 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>";
?>
4

1 に答える 1