現在、私は 'sniffer.php'という名前の単一のPHPファイルを呼び出そうとしています。 JavaScriptファイルを使用してこの非同期を実行しています。私が現在持っている問題は、PHPコードでは、(ページがロードされているように動作するように)ランダムにスリープ関数を追加したことです。その問題は2つ以上の関数がそのページを呼び出すことであり、ページの1つが最初に終了してからもう1つのリクエストが停止するまで待機します。 EG:5秒間スリープ状態になり、6秒間スリープ状態になります。最初のものは5秒で完了し、次のものは11秒で終了します。私が探しているのは5秒後に終了し、次は1秒後に終了するということです。私はそれが問題を引き起こしているだけの "スリープ"か、スリープのためにファイルがロックされているかどうかはわかりません。単一のファイルへの複数のHTTPリクエスト
ご協力いただきありがとうございます。
は私のPHPファイルは、次のようになります。
$c = rand(2,10);
sleep($c);
$html .= $c;
echo json_encode(array('html'=>$html,'status'=>1));
exit;
私のjavascriptのクラスは次のようになります。
var path = '/';
var polling = {
add : function(name, obj) {
this[name] = new xAjax(obj);
return this;
}
};
function xAjax(options) {
var consti = {
};
var defaults = {
url: path + 'sniffer.php',
method: 'POST',
responseType: 'json',
async: true,
timeout: 30000,
success: function(response) {console.log(response);},
done: function() {},
beforeSend: function() {},
error: function(e) {console.log(e);},
abort: function() {}
};
var settings = Object.assign({}, defaults, options, consti);
var xhr = null;
this.run = function() {
xhr = new XMLHttpRequest();
settings.beforeSend();
xhr.responseType = settings.responseType;
xhr.open(settings.method, settings.url, settings.async);
xhr.timeout = settings.timeout;
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
if (xhr.status === 200) {
settings.success(xhr.response);
} else {
settings.error(xhr.response);
}
settings.done();
xhr = null;
}
};
xhr.send();
return this;
};
this.abort = function() {
xhr.abort();
xhr = null;
settings.abort();
return this;
};
this.isRunning = function() {
return xhr != null;
};
this.set = function(options) {
settings = Object.assign({}, defaults, options, consti);
return this;
};
}
マイ作成/ sniffer.phpに呼び出す:
polling.add('x');
polling.x.run();
polling.add('y');
polling.y.run();
PHPセッションは同時リクエストをロックします。 PHPコードでセッションを開始しているかどうかを確認してください。 – jorgonor
スリープは現在のリクエストだけでなく、現在のセッションの実行を遅らせます。 – ADyson
あなたは正しいです。私はセッションを開始していた。私はそれをバイパスする方法がないと仮定しています。それが睡眠以外の何か(EG SQLプロセス)だったら、それでもセッションロックですか? – Deadweight