所以我每次迭代都会执行这段代码。迭代不是普通循环,而是一系列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()之后取消设置文件名,但这会导致一个问题,即没有文件可用于推入数组或插入数据库,因为我认为它之前未被设置?我在插入()后尝试了sleep(2)然后取消设置但没有帮助。
以下是更多代码:http://pastebin.com/g4fereQx
答案 0 :(得分:0)
我最好的猜测是你的代码可能没有执行你认为的确切顺序。 很难说你发布的片段很难说。
答案 1 :(得分:-1)
你可以展示一些你的代码,比如发送数据的ajax调用等。我知道我以前遇到的问题是我没有在我的ajax调用中设置async:false,所以它会尝试处理并处理尚未正确设置的信息