PHP并发文件复制

时间:2015-01-29 17:42:12

标签: php concurrency copy

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  1. 如果锁文件不存在,则创建
  2. 运行流程
  3. 取消锁定锁定文件
  4. 如果锁定文件存在,请等待它取消链接(删除),例如:

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

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