JS和PHP的加载时间不一致

6

我有一个PHP脚本通过JQuery的$.ajax被JS加载。我使用以下方式测量了PHP脚本的执行时间:

$start = microtime(); // top most part of code
// all other processes that includes AES decryption
$end = microtime(); // bottom part of code
file_put_contents('LOG.TXT','TIME IT TOOK: '.($end-$start)."\n",FILE_APPEND);

它所测得的时间小于1秒。 没有prepend/append PHP脚本。

在JS的$.ajax代码中,我通过以下方式测量了执行时间:

success: function(response) {
    console.log(date('g:i:s a') + ' time received\n');
    // all other processes including AES decryption
    console.log(date('g:i:s a') + ' time processed\n');
}

接收时间和处理时间是相同的。

然而,当我检查 Chrome 开发者工具时,它声称 PHP 脚本加载了约 8 秒钟

我测量这些事情的方法可能有问题,你认为可能出了什么问题? 我确定 PHP 加载很快,但为什么 Chrome 报告需要 8 秒以上的时间?

我正在使用本地主机,我的网络服务器很快,而且这是我遇到的唯一问题。所有其他 AJAX 调用都很快。


1
请确保使用浮点型的 microtime(true),否则你会对字符串进行算术运算。这可能不是解决你问题的方法,但这是你需要注意的事项。 - Mr. Llama
解决了!我花了两个小时才解决这个问题。你能把你的回答发表为答案吗?这样我们就可以解决我的问题了。谢谢! - rationalboss
1个回答

2
在PHP部分,请确保使用microtime(true),这样您就可以使用浮点数而不是字符串。 对字符串进行减法运算可能会产生不正确的结果。
示例:http://ideone.com/FWkjF2
<?php

// Wrong
$start = microtime();
sleep(3);
$stop  = microtime();
echo ($stop - $start) . PHP_EOL;  // Prints 8.000000000008E-5

// Correct
$start = microtime(true);
sleep(3);
$stop  = microtime(true);
echo ($stop - $start) . PHP_EOL;  // Prints 3.0000791549683

?>

1
现在它返回8秒!谢谢! :) - rationalboss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接