0

したがって、反復ごとに実行されるこのコードがあります。反復は通常のループではなく、一連の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

4

2 に答える 2

0

私の最善の推測は、あなたのコードがあなたが思っている正確な順序で実行されていない可能性があるということです. ただし、投稿したスニペットで言うのは難しいです。

于 2012-12-15T00:05:58.037 に答える
-1

データを送信する ajax 呼び出しなど、もう少しコードを表示していただけますか。過去に ajax 呼び出しで async: false を設定していないという問題があったことを知っているため、まだ適切に設定されていない情報を処理して処理しようとします。

于 2012-12-15T00:07:50.283 に答える