ajax.php
cURL を使用して XML をダウンロードするファイルに Ajax 要求を送信しています。
//ajax.php
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, USERNAME.':'.PASSWORD);
curl_setopt($ch, CURLOPT_POSTFIELDS, getData());
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
$data = curl_exec($ch);
echo $data;
ユーザーはこのプロセスについて確認されておらず、Web ページを更新する可能性があります。
時々curl_exec($ch)
長い時間がかかり、timeout
エラーが発生します。このエラーにより、スクリプトが続行できなくなります。この問題を解決するための正確な解決策を検索しましたが、見つかりませんでした。
ここで、より大きな問題は、この場合、ajax 要求がバックグラウンドで処理され、ユーザーがページを更新している間、ajax 要求がタイムアウトするか終了するまで更新されないことです。
ページが更新されたときにそのcURLリクエストを中止することは一時的な解決策としては良いと思いましたが、その方法がわかりません。
注: Ajax リクエストは jQuery を使用してセットアップされており、中止してajax.abort()
も問題は解決しませんでした。