質問編集履歴
3
タイトル、実行されないのは「ajaxのコールバック関数」ではなく「CakePHPの処理」である内容に変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ajaxにて重たい処理を非同期で実行し、その後ajaxで軽い処理を行うと、軽い処理の
|
1
|
+
ajaxにて重たい処理を非同期で実行し、その後ajaxで軽い処理を行うと、軽い処理のcakePHP処理が実行されないサーバがある
|
test
CHANGED
File without changes
|
2
質問を修正、cakephp側の軽いアクション名を「check_program」に変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ajax
|
1
|
+
ajaxにて重たい処理を非同期で実行し、その後ajaxで軽い処理を行うと、軽い処理のコールバック関数が実行されないサーバがある
|
test
CHANGED
@@ -1,14 +1,46 @@
|
|
1
|
-
|
1
|
+
cakephpのアクションhevy_program実行中に、
|
2
2
|
|
3
|
-
Aサーバではコールバック関数が実行され、
|
3
|
+
Aサーバでは「run_light」のコールバック関数が実行され、
|
4
4
|
|
5
|
-
Bサーバではコールバック関数が実行されないという現象が発生しています。
|
5
|
+
Bサーバでは「run_light」のコールバック関数が実行されないという現象が発生しています。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
アパッチのアクセスログを見ると、
|
10
|
+
|
11
|
+
Aサーバは1ブラウザからのリクエストに対して
|
12
|
+
|
13
|
+
複数の子プロセスがリクエストを受けているように見えます。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
しかし、Bサーバは1ブラウザからのリクエストに対して
|
18
|
+
|
19
|
+
1つの子プロセスがリクエストを受けているように見えます。
|
20
|
+
|
21
|
+
→ check_programへのアクセスログが、hevy_programの処理完了後に
|
22
|
+
|
23
|
+
複数個書き出されるためそう考えております。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
■質問
|
28
|
+
|
29
|
+
このような挙動となる原因(設定など)をご教示いただけないでしょうか?
|
30
|
+
|
9
31
|
アパッチ(httpd.fonfやconf.d以下のファイル)やPHP周り(php.ini)の設定を見ましたが、特に気になる点はありません。
|
10
32
|
|
11
|
-
他に見るべき点があれば、アドバイスをいただけないでしょうか
|
33
|
+
他に見るべき点があれば、アドバイスをいただけないでしょうか。
|
34
|
+
|
35
|
+
※サーバごとでリクエスト実行の挙動が異なるため、設定を気にしています。
|
36
|
+
|
37
|
+
※サーバ構築者はいないので、詳細な設定は不明です。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
また、このようにアパッチに重たい処理をさせ、Ajaxの非同期処理で進捗を確認する方法は良い方法なのでしょうか?
|
42
|
+
|
43
|
+
※重たい処理はcommandとしてバックグラウンドで処理する方法を採用すべきと考えますが、その方法に切り替える時間がないため、Ajax非同期処理を採用しました。
|
12
44
|
|
13
45
|
|
14
46
|
|
@@ -30,7 +62,7 @@
|
|
30
62
|
|
31
63
|
|
32
64
|
|
33
|
-
|
65
|
+
check_programはcakephpのアクションで、
|
34
66
|
|
35
67
|
前述のhevy_programが終わったかを確認する処理です。
|
36
68
|
|
@@ -90,7 +122,7 @@
|
|
90
122
|
|
91
123
|
function run_light(){
|
92
124
|
|
93
|
-
var URL = "
|
125
|
+
var URL = "check_program";
|
94
126
|
|
95
127
|
$.ajax({
|
96
128
|
|
1
「行っていること」より、IE関連の記述を削除。(関係のない情報で、消し忘れです)
test
CHANGED
File without changes
|
test
CHANGED
@@ -37,12 +37,6 @@
|
|
37
37
|
Dテーブル上のレコードを参照し、終了したかどうかを判定し戻します。
|
38
38
|
|
39
39
|
※Dテーブルのあるレコードはhevy_programが終わるまで、処理中が入ります。
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
IEだと、cakephpのアクション「hevy_program」が終了するまで
|
46
40
|
|
47
41
|
|
48
42
|
|