【发布时间】:2011-07-23 21:25:22
【问题描述】:
我让一个新人(隔壁的少年)编写了一些 php 代码来跟踪我网站上的一些使用情况。我对php不熟悉,所以我想问一些关于并发文件访问的问题。
我的本机应用程序(在 Windows 上)偶尔会通过点击包含我的 php 脚本的 URL 将一些数据记录到我的网站。原生应用不会检查返回的数据。
$fh = fopen($updateFile, 'a') or die("can't open file");
fwrite($fh, $ip);
fwrite($fh, ', ');
fwrite($fh, $date);
fwrite($fh, ', ');
fwrite($fh, implode(', ', $_GET));
fwrite($fh, "\r\n");
fclose($fh);
这是一个低流量的网站,数据并不重要。但是,如果两个用户发生冲突并且脚本的两个实例都尝试在文件中添加一行,会发生什么? php中是否有任何隐式文件锁定?
上面的代码是否至少不会被锁定并且永远不会将控制权返回给我的用户?文件会损坏吗?如果我让上面的脚本每月删除文件,如果脚本的另一个实例正在写入文件会发生什么?
【问题讨论】: