Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php fwrite创建多个文件_Php_File Io_Fwrite_Epoch - Fatal编程技术网

Php fwrite创建多个文件

Php fwrite创建多个文件,php,file-io,fwrite,epoch,Php,File Io,Fwrite,Epoch,我认为使用创建一个基于epoch的文件是获得一些仍然有用的唯一文件名的好方法。不幸的是。每次脚本运行时,我都会得到两个文件,一个是空白文件,另一个是包含数据的文件。如何让php在每次提交表单时只编写一个文件 $t=time(); $dir = "tmp/"; $LogName = $t . ".txt"; $dicz = $dir.$LogName; $bunny = fopen( $dicz, 'w' ) or die('Cannot open file: '.$dicz); if( $

我认为使用创建一个基于epoch的文件是获得一些仍然有用的唯一文件名的好方法。不幸的是。每次脚本运行时,我都会得到两个文件,一个是空白文件,另一个是包含数据的文件。如何让php在每次提交表单时只编写一个文件

$t=time();
$dir = "tmp/";
$LogName =  $t . ".txt";
$dicz = $dir.$LogName;
$bunny = fopen( $dicz, 'w' ) or die('Cannot open file:  '.$dicz); 
if( $bunny == false )
{
   echo ( "Error in opening new file" );
   exit();
}
fwrite ($bunny,  "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");

我以前有过这个问题,今天又有了。我发现的问题是,大多数情况下,网站缺少一个
favicon.ico
。我知道这听起来很奇怪,但是浏览器会在你不知道的情况下发出两个请求,导致这种行为。这在铬合金中尤其普遍

将空白的
favicon.ico
添加到站点的根目录中应该会立即修复它


你可以生成一个favicon

好的,这是您的代码:

$t=time();
$dir = "tmp/";
$LogName =  $t . ".txt";
$dicz = $dir.$LogName;
$bunny = fopen( $dicz, 'w' ) or die('Cannot open file:  '.$dicz); 
if( $bunny == false )
{
   echo ( "Error in opening new file" );
   exit();
}
fwrite ($bunny,  "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
现在让我们关注这两条线:

$bunny = fopen( $dicz, 'w' ) or die('Cannot open file:  '.$dicz); 
if( $bunny == false )
如果您的
fopen
附加了
或die()
,那么
$bunny
何时会等于
false

也许你应该这样尝试:

$bunny = fopen( $dicz, 'w' ); 
if( $bunny == false )
{
   echo ( "Error in opening new file" );
   exit();
}
else {
  fwrite ($bunny,  "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
}
或者只使用负数-(aka
!file_exists()
)-检查文件是否存在:

$t=time();
$dir = "tmp/";
$LogName =  $t . ".txt";
$dicz = $dir.$LogName;
if (!file_exists($dicz)) {
  $bunny = fopen( $dicz, 'w' ); 
  if( $bunny == false )
  {
    echo ( "Error in opening new file" );
    exit();
  }
  else {
    fwrite ($bunny,  "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
  }
}

这样,只有当文件确实不存在时,脚本才会写入该文件。

我遇到了与javascript相同的问题。页面加载了两次,fopen收到两个不同的文件名作为参数。查看AD7six对原始消息的评论。

我在脚本中没有看到任何可以解释所述行为的内容。我只能认为每次提交脚本都要运行两次。另外,不要忘记在完成时关闭()文件。实际上,经过进一步考虑,如果两个用户在一秒钟内使用表单,可能会发生冲突。Time()只有第二个分辨率。你应该使用适当的锁定来确保脚本不会相互干扰。
每次脚本运行时,我都会猜到2个文件,因为html会再次加载相同的页面,因为页面源中有一个错误的css/js/image/asset url。我认为这是一个很好的猜测。我来看看这不是一个100%错误的答案,但从编程的角度来说,我们可以很容易地预测到可能会创建两个文件的情况,并采取相应的行动。我完全同意。以我今天的问题为例。我已经准备好了所有的检查,准备好了复制品。但这并没有解决问题。直到我将favicon.ico放在根目录中,问题才得以解决。