所以我有这段代码在每次迭代中执行。这些迭代不是普通的循环,而是一系列 ajax 请求迭代的一部分。第一个 ajax 请求确定分配给例如 $_SESSION['filename'] 的文件名,然后将该变量推入和数组等。现在当我处理多个文件时会出现问题。
经常发生的情况是,生成的文件名之一被复制并插入到它不应该插入的数据库中。
第一个回调函数:
case 'upload':
...
$_SESSION['upload_filename'] = random_filename($alphas).'.'.$fileExt;
...
break;
第二个回调函数:
case 'insert_db':
array_push($someGlobalArray, $_SESSION['upload_filename']);
insert($_SESSION['upload_filename']);
break;
所以正如我所说的那样,70% 的时间都会正确生成一个新的文件名。我不确定为什么以前“迭代”中的旧文件名仍然存在并且 $_SESSION['filename'] 不包含新文件名。我尝试在第二个回调函数中的 insert() 之后取消设置文件名,但这会导致一个问题,即没有文件名可以被推入数组或插入数据库,因为我认为它之前被取消设置?我也在 insert() 之后尝试了 sleep(2) ,然后取消设置但没有帮助。
这是更多代码: http: //pastebin.com/g4fereQx