PHP 并发文件复制


PHP concurrent file copy

我正在开发一个PHP的Web应用程序,这是我的第一个Web应用程序。其中一个进程需要将一些文本文件复制到目标目录。在目标目录中,它将打开文本文件并在 Web 浏览器中显示输出。我想知道如果两个用户同时启动该过程会发生什么?由于文件必须复制到目标目录并从那里读取。我是否每次都创建一个唯一的目标目录?如何正确完成此操作?

您可以创建一个唯一的目录,这完全取决于您的目标是什么。 是否要允许两个不同的用户同时执行它?

数据库在这些情况下通常很有用,因为它们是为并发活动和功能表甚至行锁定而创建的。

在这种情况下,如果要阻止第二个用户同时运行进程,可以使用锁定文件:

  1. 创建锁定文件(如果不存在)
  2. 运行进程
  3. 取消锁定文件的链接

如果锁定文件存在,请等待它被取消链接(删除),例如:

while (file_exists('file.lock')) {
   usleep(100000); // sleep 100ms
}
touch('file.lock');
// Execute processes here
unlink('file.lock');

锁定文件通常用于文件系统和应用程序中,以防止用户同时修改文件或运行多个实例。