作業中の .php ページが 2 つあります。Index.php には、index.php に投稿するファイル アップロード フォームがあります。フォームを送信した後、index.php で問題なく $_FILES にアクセスできます。
私の問題は、(フォームの送信とページの読み込み後) .ajax (jQuery) を使用して別の .php ファイルを呼び出して、ファイルを開いて行の一部を処理し、結果を ajax に返すことができるようにすることです。その後、ajax は結果を表示し、それ自体を再帰的に呼び出して次の行のバッチを処理します。
基本的には、csvをチャンクで処理(DBなどに入れる)し、チャンクの間にユーザーに表示したいと考えています。ファイルは400,000行以上あり、ユーザーはそれらすべてが処理されるまで10分以上待ちたくないので、私はこのようにしています。
このファイルを移動 (保存) したくありません。処理して破棄するだけでよく、処理中にユーザーがページを閉じてもファイルは破棄されないからです。cron スクリプトを実行できますが、したくありません。
私が本当にやりたいのは、(単一の) $_FILES を .ajax に渡すか、2 ページ目で使用するために $_POST または $_SESSION に保存することです。
私の目的に希望はありますか?
それが役立つ場合は、ajaxコードを次に示します。
function processCSV(startIndex, length)
{
$.ajax({
url: "ajax-targets/process-csv.php",
dataType: "json",
type: "POST",
data: { startIndex: startIndex, length: length },
timeout: 60000, // 1000 = 1 sec
success: function(data) {
// JQuery to display the rows from the CSV
var newStart = startIndex+length;
if(newStart <= data['csvNumRows']) {
processCSV(newStart, length);
}
}
});
}
processCSV(1, 2);
});
PS 私はこの$_FILES または $_POST を PHP で新しいページに渡すことを試みましたが、うまくいきません :( SOS.
明確にするために:私の問題は、ajaxによって呼び出されるページの $_FILE にアクセスしたいということです。ファイルは index.php にアップロードされ、フォームは action="#" であるため、index.php に投稿されます。ポスト index.php が process-csv.php に ajax 呼び出しを送信した後、process-csv.php でファイルにアクセスできるようにする必要があります。古いファイルをクリーンアップする必要がないため、ファイルを移動したくありません。