我的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)。在循环中,我会继续检查,直到所有其他部分到达。但是如果连接中断而它们没有呢? :)