したがって、反復ごとに実行されるこのコードがあります。反復は通常のループではなく、一連のajaxリクエストの反復の一部です。最初のajaxリクエストは、たとえば$ _SESSION ['filename']に割り当てられたファイル名を決定し、次にこの変数が配列などにプッシュされます。複数のファイルを処理している場合に問題が発生します。
生成されたファイル名の1つが複製されてデータベースに挿入されることがよくありますが、挿入されるべきではありません。
最初のコールバック関数:
case 'upload':
...
$_SESSION['upload_filename'] = random_filename($alphas).'.'.$fileExt;
...
break;
2番目のコールバック関数:
case 'insert_db':
array_push($someGlobalArray, $_SESSION['upload_filename']);
insert($_SESSION['upload_filename']);
break;
つまり、私が言ったように、新しいファイル名は70%の確率で適切に生成されます。以前の「反復」の古いファイル名が残り、$ _SESSION['filename']に新しいファイル名が含まれていない理由がわかりません。2番目のコールバック関数でinsert()の後にファイル名を設定解除しようとしましたが、ファイル名が配列にプッシュされるかデータベースに挿入されることができないという問題が発生します。また、insert()の後にsleep(2)を試し、その後設定を解除しましたが、役に立ちません。
コードの詳細は次のとおりです:http://pastebin.com/g4fereQx