0

所以我有这段代码在每次迭代中执行。这些迭代不是普通的循环,而是一系列 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

4

2 回答 2

0

我最好的猜测是您的代码可能没有按照您认为的确切顺序执行。不过,您发布的片段很难说。

于 2012-12-15T00:05:58.037 回答
-1

你能显示更多你的代码吗,比如发送数据的ajax调用等等。我知道我过去遇到过问题,我没有在我的 ajax 调用中设置 async: false ,因此它会尝试处理尚未正确设置的信息并采取行动

于 2012-12-15T00:07:50.283 回答