CURL を使用して外部 URL から大きなファイルをダウンロードし、サーバーに保存しています。これには数分かかる場合があります。ダウンロードが実行されている間、curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,.. を使用して、現在のダウンロード情報で $_SESSION['download_progress'] 変数を定期的に更新する匿名関数を実行しています。
現在、これはすべて upload.php ファイルで行われており、ユーザーがファイルのダウンロードを待っている間に、javascript を使用して、次の単純なコードを含む progress.php ページを要求します。
session_start();
echo $_SESSION['download_progress'];
これにより、JavaScript コードでダウンロードの進行状況に関する情報を表示できます。
それが機能していないことを除いて。
「upload.php」のロードが完了するまで「progress.php」ページはロードされません (つまり、両方のページはファイルのダウンロードが完了した後にのみロードされます)。これは良くありません。session_start() は、何らかの方法で「progress.php」ページの読み込みをブロックします。私は自分のサーバー (apache + php 5.4) を使用しているので、すべての管理者権限を持っています。
どうすればこの問題を解決できますか? ダウンロード情報をセッション変数の代わりにテキスト ファイルに書き込み、javascript を使用してそのテキスト ファイルを直接読み取るなど、いくつかの醜い回避策を使用することもできますが、それは避けたいと思います。
ありがとう