[解決済み] Dojo: すべての xhr / ajax 呼び出しが同期化され、他の呼び出しをブロックしているように見える
質問
引き継いだCRMの作業をしています。長い話ですが、PHPスクリプトを呼び出すボタンがあり、これはバックグラウンドで実行され、応答を待つ必要はありません。
request(idata+'transferInTimeExec.php',{
sync: false,
preventCache:true,
method:'GET'
});
では、その
transferInTimeExec.php
このスクリプトは、人材紹介会社の毎週のタイムシートを処理し、それを処理し、多くのDBオペレーションを行うという非常に複雑なものです。
Chromeを使用。実行するボタンを押すたびに、終了するまですべてのxhrコールがブロックされます。CRMはquot;ajax heavy"で、スクリプトの実行中、ユーザーは何もできず、別のサブページに移動しても、開始したプロセスが終了するまでxhrリクエストは解決されません。新しいブラウザのタブを開いて何かをしようとしても、それができません。スクリプトの実行中に別のブラウザ(Firefox)でCRMを開くと、CRMを使用することができます。
Networkタブでは、最初のものは保留中で、それに続く別のAjax呼び出しはすべて待機しているのがわかります(すべてsync:falseです)。
さらに、ロジックをすべてPHPの関数に置き換えてみました。
sleep(30)
30秒間何もせず、何も返さないようにしましたが、同じ問題です。
XHRをプレーンなjavascriptで試してみました。
onClick
をDojoのメソッドではなく、ボタンのHTMLマークアップ上で使用することで、同じ問題が発生します。
プロジェクト全体に対して、残酷な検索と置換を行い
sync:true
を
sync:false
- は何も変わりません。
私はアイデアを使い果たしました、多分ここで誰かがこれを解決するのを助けることができますか?同期/非同期のためのグローバルスイッチはありますか?Ajaxの問題でないなら、他に何が考えられますか?
解決方法は?
スクリプト
transferInTimeExec.php
はセッションを使用していると思われます。その場合、他のAJAXコールは開始せず、セッションデータを上書きしないように、このAJAXコールが終了するのを待ちます。AJAXコールを非同期に設定しても、動作は変わりません。
このスクリプトの実行に1時間かかる場合、UIからAJAXとして呼び出すのは悪い考えです。Cronをセットアップして、毎時間または毎日、バックエンドですべての処理を実行する必要があります。もちろん、セッションを使用している場合は、スクリプトに何らかの調整を加える必要があります。
EDIT
を使用することができます。
session_write_close();
をスクリプトの先頭で使用します。これは、このスクリプトはセッションに何も書き込まないので、 他の AJAX コールが自由にセッションを使用できることを PHP に伝えるものです。しかし、この後にセッションに何も書き込まないように注意してください。
関連
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】別のjsファイル内でJavaScriptの関数を呼び出す
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー
-
[解決済み】Google Chromeでデバッグ時にスクリプトの実行を終了させる方法は?
-
[解決済み] HTTPSページでHTTP AJAXを実行すると「Mixed Content Blocked」と表示される。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない