0

我有一个奇怪的问题。这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
$fp=fopen("test.txt","w",true);
if($fp)
{
$start=time();
for($i=0;$i<=17800;$i++)
{
    fwrite($fp,"bandwith");
}
fclose($fp);
$stop=time();
$diff=round($stop-$start,2);
$fsize=round(filesize("test.txt")/1024,2);
$bandwidth=$fsize/$diff;
echo "<strong>The speed of your broadband is</strong> ".$bandwidth;
}
else
{
    echo ("problem with permission");
}
?>

</body>
</html>

我实际上是在尝试计算带宽。我得到的错误是 $bandwidth 计算部分上的“除以零”。奇怪的是,当我继续刷新窗口时,我突然得到了答案,然后问题又来了下次刷新。

额外信息:

我发现当 $start 和 $stop 相同时会发生错误。现在我的问题是:本地主机这么快就可以在同一时间内完成文本文件打开和写入部分导致除法我的零错误?我还检查了文本文件,它包含数据,每隔一段时间就会被删除和写入。我只是想清楚地解释它背后的原因。

4

3 回答 3

2

如果您需要更准确的时间计算,并且您的系统支持它,您可以使用microtime

$time_including_microseconds = microtime();

请参阅手册中有关爆炸的示例。

于 2012-08-29T17:28:18.817 回答
0

您可以使用此函数来测量文件访问时间:

http://php.net/manual/en/function.filemtime.php

于 2012-08-29T17:25:01.133 回答
0

正如评论所说,您的文件操作(写入)很可能在不到一秒的时间内完成,导致除以零。

为了实现您的目标,考虑使用 PHP 的microtime函数。这包括带有时间戳的毫秒数。

另请参阅: 测量 php 脚本执行时间的准确方法

于 2012-08-29T17:29:00.080 回答