我有一个新手(隔壁的少年)写了一些
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,implode(',$_GET)); fwrite($fh,"\r\n"); fclose($fh);
这是一个流量较低的站点,数据并不重要.但是如果两个用户发生冲突并且脚本的两个实例都试图在文件中添加一行,会发生什么?在PHP中是否有任何隐式文件锁定?
上面的代码至少是安全的,不会锁定并且永远不会将控制权返回给我的用户吗?该文件可以被破坏吗?如果我上面的脚本每月删除文件,如果脚本的另一个实例正在写入文件,会发生什么?
你应该锁定文件:
<?PHP $fp = fopen($updateFile,'w+'); if(flock($fp,LOCK_EX)) { fwrite($fp,'a'); flock($fp,LOCK_UN); } else { echo 'can\'t lock'; } fclose($fp);
原文地址:https://www.jb51.cc/php/131887.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。