質問編集履歴

3

タイトル、実行されないのは「ajaxのコールバック関数」ではなく「CakePHPの処理」である内容に変更

2017/10/04 01:27

投稿

siosenbei
siosenbei

スコア22

test CHANGED
@@ -1 +1 @@
1
- ajaxにて重たい処理を非同期で実行し、その後ajaxで軽い処理を行うと、軽い処理のコールバック関数が実行されないサーバがある
1
+ ajaxにて重たい処理を非同期で実行し、その後ajaxで軽い処理を行うと、軽い処理のcakePHP処理が実行されないサーバがある
test CHANGED
File without changes

2

質問を修正、cakephp側の軽いアクション名を「check_program」に変更

2017/10/04 01:27

投稿

siosenbei
siosenbei

スコア22

test CHANGED
@@ -1 +1 @@
1
- ajax重たい処理を非同期で実行し、その後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
- run_programはcakephpのアクションで、
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 = "run_program";
125
+ var URL = "check_program";
94
126
 
95
127
  $.ajax({
96
128
 

1

「行っていること」より、IE関連の記述を削除。(関係のない情報で、消し忘れです)

2017/10/03 23:47

投稿

siosenbei
siosenbei

スコア22

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