在PHP中同时上传的竞争条件

时间:2014-12-12 03:50:54

标签: php file-io upload race-condition

我的PHP请求处理程序如下所示:

// it's one file only, always
foreach($_FILES as $file){

  // error checks, move etc.
  if(!move_uploaded_file ...

  // assemble if the number of files match the total number of parts
  $numFiles = count(glob("{$tempDir}/*", GLOB_NOSORT));

  if($numFiles === $totalChunks){     // <- problem
    // assemble file
  }      

}

看来,如果两个部分同时到达那个条件被触发两次。

有没有办法以块的形式上传文件,让我们一次说3个,并且在PHP端组装文件时避免竞争条件?

当上传最后一部分时,我想在循环内“睡眠”约5秒钟(例如,#3 of 3)。在循环中,我会继续检查,直到所有其他部分到达。但是如果连接中断而它们没有呢? :)

0 个答案:

没有答案