通信回数を減らせるかな?DB更新を早く検知出来ないかな?と思いPHP側をループ
javascript->ajax->PHP(データベース更新されるまで60秒sleepを挟んでdo~loop)->戻り値
送信元
javascript
1 var timestamp=new Date().getTime(); 2 jqxhr =$.ajax({ 3 url:"data.php?"+timestamp, 4 data:{ 5 "***":***, 6 "***":*** 7 }, 8 async:true, 9 type:"POST", 10 datatype:"json", 11 //timeout:5000 12 }) 13 .done(function(data){
エックスサーバー側 PHP7.0.30
PHP
1 set_time_limit(90); 2 ...... 3 $timeout=0; 4 do { 5 ......mysql内更新有無処理 6 if(更新==true)break; 7 sleep(1); 8 $TIMEOUT++; 9 } while (更新==true && $TIMEOUT<60); 10 echo json_encode(....);
通信回数はデータベース更新の頻度により1万~3万回位
90%位は60回ループする
返り値はPCブラウザのデベロッパーツール->Network->sizeで見ると200~500b
通信状態があまり良くない環境(Android携帯、通信の棒1本~2本、Chrome)で使用
送信元は8時間位表示しっぱなし
追記)
処理件数は1レコード9カラムのみ
1レコード9カラム全て埋まってて処理時間100ms位
2か所からアクセスしても変化ないみたい
DB更新は別処理(VBから別のPHPにPOST送信)
時々(1日1回位,出ない日も有り)
PHP error_log
[Wed Oct 03 04:00:21.309669 2018] [fcgid:warn] [pid 28033] (104)Connection reset by peer: [client 数値.数値.125.39:43060] mod_fcgid: error reading data from FastCGI server, referer: https://送信元.php?1529109379
[Wed Oct 03 04:00:21.309735 2018] [core:error] [pid 28033] [client 数値.数値.125.39:43060] End of script output before headers: display-data0.php, referer: https://送信元.php?1529109379
[Wed Oct 03 04:00:21.309766 2018] [fcgid:emerg] [pid 28033] (22)Invalid argument: [client 数値.数値.125.39:43060] mod_fcgid: can't lock process table in pid 28033, referer: https://送信元.php?1529109379
と出ます
出るとサイト全体にアクセスできなくなったりします
ループするのをやめると出ない(通信回数1日6万回位)
2015年~エラー無
表示元でデータベース更新→更新データ取得の他の方法などありますか?
それともループでDB更新待ちはあまり良くない方法なのでしょうか?
回答1件
あなたの回答
tips
プレビュー