PHP目录存在检查问题


PHP directory exist check problems

上传文件时,我用PHP创建新目录时遇到问题。

目录已创建,但如果同一脚本的另一个实例同时运行,则目录存在检查无法正常工作(会发出PHP警告)。

有人告诉我这是一种种族状况,但在增加了一些随机睡眠时间后,我仍然有这个问题。

usleep(mt_rand(1, 50));
if(!is_dir($dir)){
  mkdir($dir);    
}
usleep(mt_rand(1, 50));

有人能帮忙吗?

有人知道一种安全的方法来上传一个文件的多个部分,3-4个部分同时上传吗?目前,我正在将上传的部分移动到一个临时目录中(如果同时有更多的部分到达,is_dir会在临时目录中失败),然后当该目录中的文件数量等于部分数量时,这些部分就会合并。但它失败了很多次,有时is_dir会发出警告,有时零件会组合两次。。。

mkdir()在成功时返回true,在失败时返回false(dir已经存在)。所以你可以把它作为条件检查的一部分。

if (!is_dir($dir) && mkdir($dir)) {
    // good to go
}

您希望在目录的页面测试顶部使用clearstatcache(),以便当前目录结构的系统缓存是新鲜的。点击此处阅读更多

上传javascript将文件拆分为多个部分,并向php发送4个ajax请求,因此php同时接收4个部分。当收到所有部分时,php应该将它们组合起来,在服务器上复制文件

那么,为什么要将它们分开,将Ajax作为一个单独的请求发送,然后允许PHP在自己的脚本中处理每个blob文件部分呢。这将回避问题。PHP——有了正确的设置——可以轻松地处理大块块中的大文件。