我正在开发一个PHP Web应用程序,这是我的第一个Web应用程序。其中一个进程需要将一些文本文件复制到目标目录。在目标目录中,它将打开文本文件并在Web浏览器中显示输出。我想知道如果两个用户同时启动该过程会发生什么?由于文件必须复制到目标目录并从那里读取。我每次都创建一个唯一的目标目录吗?这怎么做得好?
答案 0 :(得分:1)
您可以创建一个唯一的目录,这完全取决于您的目标。您是否希望允许两个不同的用户同时执行它?
数据库在这些情况下通常很有用,因为它们是为并发活动和功能表甚至行锁定而创建的。
在这种情况下,如果您想阻止第二个用户同时运行该进程,您可以使用锁定文件:
如果锁定文件存在,请等待它取消链接(删除),例如:
while (file_exists('file.lock')) {
usleep(100000); // sleep 100ms
}
touch('file.lock');
// Execute processes here
unlink('file.lock');
锁文件通常用于文件系统和应用程序,以防止用户同时修改文件或运行多个实例。