私の状況は次のとおりです。Debian Linux
にAJAXを使ってファイルをダウンロードするとPHP Webサーバー全体がフリーズするのはなぜですか?
、私は2つの報告技術、JSReport
とPHP-Reports
を「バインド」したいと思います。
PHP-Reports
は正確HTML
と、それが完了すると、複数のファイルタイプにエクスポートしたレポートの書式を設定するために私を許可するだけSQL
とJSReport
とデータおよび関連するサブ合計を得るために私を許可します。
問題は次のとおりです。JSReport
にアクセスするために、レポートデータファイルの保存を自動化したいと考えています。
ことを行うために、私は少しにPHP-Reports
ソースを変更した:
私は、タグのhrefにURLでダウンロードリンクの各Ajax
スクリプトをクリックの上にバインドするためにjQuery
を使用。今
$(".report_link").each(function() {
$(this).bind('click', function() {
$.ajax({
url: "/user/ajax/save_a_file.php",
type: 'GET',
data: "url=" + $(this).attr("href"),
// Ajax needs synchronous execution in this case
async:false,
success: function(result) {
alert("Resultat requête AJAX:" + result);
},
error: function(xhr, ajaxOptions, thrownError) {
console.log("AJAX -> Erreur " + xhr.status + ": " + thrownError);
console.log("WBREPORT -> Error : can not save file");
}
});
});
});
私のAjaxのファイル:ここで
は、JSの一部である- コマンド:私はそれはAJAXファイルで実現するために多くの方法を試してみました
wgetを使用した行$complete_url = ""; $starting_date = ""; $ending_date = ""; $url = ""; if(null !== $_GET['url'])// && null !== $_GET['macros']) { $url = $_GET['url']; if (null !== $_GET['macros']) { $macros = $_GET['macros']; if (null !== $macros['date']['start']) $url .= '¯os[date][start]=' . urlencode($macros['date']['start']); if (null !== $macros['date']['end']) $url .= '¯os[date][end]=' . urlencode($macros['date']['end']); } } $filedir = "/var/www/wbreport/user/data/residents/"; $report_name = "test.json"; $report_filepath = $filedir . $report_name; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec ($ch); $error = curl_error ($ch); curl_close ($ch);
- cURLコマンドライン もしくはshell_execを用いないと
- カール()
それはPHP Server
の外を動作しますが、私はボタンをクリックしたときにをフリーズ。それはまたがフリーズしたときにダウンロードしようとするとフリーズしますPHP Server
がPHP Server
を実行するシェルの外にあっても、のダウンロードはPHP Server
にダウンロードされます。
これは私がダウンロードに使用している技術ではなく、より深刻な問題です。 /および/またはPHP-Reports
にPHP Server
とダウンロードを凍結する動作があることをお勧めします。しかし、私は何ができるのか分からない。
ヒントやアイデアがあれば幸いです。
ありがとうございました。
'PHP-Server'は複数の同時リクエストをサポートしますか? – Alnitak
PHPサーバはシングルスレッドであり、長時間実行する操作を実行している場合は、これが完全に予想されます。さらに、PHP開発Webサーバーは、テスト中で、運用中でない場合にのみ使用されます。 – user2064000
'async:false'はあなたの* browser *もロックします。それがその全体のポイントです。 – ceejayoz