【问题标题】:PHP Program not working properlyPHP程序无法正常工作
【发布时间】:2012-08-24 09:05:41
【问题描述】:

我遇到了一个奇怪的问题。这是我的代码:

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

【问题讨论】:

  • 是的。 Time() 以秒为单位。可以在几毫秒内读取文件。
  • 文件不被读取,每次脚本执行时都会写入。

标签: php networking network-programming localhost


【解决方案1】:

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

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

另请参阅: Accurate way to measure execution times of php scripts

【讨论】:

    【解决方案2】:

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

    $time_including_microseconds = microtime();
    

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

    【讨论】:

    • 我知道。我想知道本地主机是否有可能以0秒差异的速度完成上述创建和写入文件的任务?
    • @user1633170 当然,0.49999999999... 秒之前和之后的一秒对于在本地系统上写入文件来说是很长的时间。
    • @user1633170 jeroen 有很多声望,这表明他非常可靠。试试他的方法。
    • 天啊!!谢谢你的信息先生。
    • @user1633170 顺便说一句,您应该始终考虑除以零,即使您使用微秒。
    【解决方案3】:

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

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

    【讨论】:

    • 我想你没有理解我的问题。我不想要文件修改时间。我只是在计算完成任务所需的时间。
    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多