PR

【即時】管理画面ではapiのカウントアップをしない #1177

kouho opened this at 2021-09-24T15:56:28; closed

Description

opened by kouho at 2021-09-24T15:56:28; updated 2025-08-27T16:29:09

概要

本番管理画面でユーザー検索時にエラーが出ています。

[原因]
ユーザー情報を取得する際にapiアクセスをしていますが、
apiアクセス数をカウントする処理でINSERT文が実行できない。(SLAVEにはreadonlyで接続しているため)

[対応]
管理画面かどうかの判定をupdate_yamada_api_count関数に加えています。
判定のための変数が見つからなかったためサーバー側に環境変数を追加する対応を行なっています。

テスト方法、確認した内容

まず、管理画面を開きユーザー検索をしてlog_yamada_api_countがカウントアップされることを確認してください。

その後ローカルサーバー内の以下のファイルを修正してください。
vi /etc/nginx/conf.d/jrye-admin.conf

location ~ \.php$ {
}

こちらの最後に fastcgi_param ENV_DETAIL jr_cpanel; を追加してください。
systemctl restart nginx # nginxの再起動

最後に、管理画面のユーザー検索をしてlog_yamada_api_countがカウントアップされなければOKです。

TODO

開発、本番、ローカル環境それぞれで対応が必要。

kouho add_label at 2021-09-24T15:56:33: 管理画面
kouho assign at 2021-09-24T15:56:38: Not assigned:kouho

Comment

#13934 by kouho at 2021-09-24T15:57:21; updated 2021-09-24T15:57:21

@iwamoto
確認お願いいたします。

Comment

#13935 by kouho at 2021-09-24T16:08:01; updated 2021-09-24T16:08:01

@wada
確認お願いいたします。
管理画面かどうかの判定でもっと良い方法がありましたらお伝えいただきたいです。

kouho change_title at 2021-09-24T16:08:10: 管理画面ではapiのカウントアップをしない 【即時】管理画面ではapiのカウントアップをしない

Comment

#13937 by wada at 2021-09-24T16:18:56; updated 2021-09-24T16:18:56

@kouho
APIのカウントをSLAVEで実行しようとしている問題について、
最も不自然な点は、$_dbc[37] #master接続にも関わらずinsertできなかったことだと思いました。
そのため、ユーザー検索のエラーに関する対応は、m_user_info$_dbc[37]$_dbc[137] にするのが最も対応が簡単だと思います。

管理画面判定変数は、今後利用することが出てくると思うので実装は賛成です。

Comment

#13941 by kouho at 2021-09-24T17:13:13; updated 2021-09-24T17:20:02

@wada
確認ありがとうございます。
$_dbc[37] = S_db_connect_s($_df['DB_CONF_GEMUTOMO'], 137);

$_dbc[37] = S_db_connect_s($_df['DB_CONF_GEMUTOMO'], 37);
$_dbc[137] = S_db_connect_s($_df['DB_CONF_GEMUTOMO'], 137);

$_dbc[37] をmasterに向けた場合、多くはないですが m_user_info 内で使用しているSubFuncの関数でSELECTする際の向き先も jr-dbm01 に向いてしまうように見えますがそれでOKということでしょうか?

管理画面でのSELECTは極力 adm-dbs01 を向いている方が良いかと思うのですが。

Comment

#13942 by wada at 2021-09-24T17:26:07; updated 2021-09-24T17:27:36

@kouho
slaveにしたい箇所を$_dbc[137]にすれば大丈夫だと思います。
もし、m_user_info.inc内の$_dbc[37]が~~全て~~slave接続想定なら、$_dbc[137]に置換する必要があります。

Comment

#13943 by kouho at 2021-09-24T17:43:41; updated 2021-09-24T17:43:41

@wada
かしこまりました。Subfuncの関数を修正するのも良くないと思いますので、
そちらはそのままにしてm_user_infoを修正してみましたので確認お願いいたします。

Comment

#13944 by wada at 2021-09-24T18:08:20; updated 2021-09-24T18:08:20

@kouho
ありがとうございます。
cpanelをdevelopやmasterにマージしないのであれば、subfunc.inc内も$_dbc[137]に変えて良いと思います。
その場合、$_dbc[37]と同じようにindex.phpなどで、接続情報を格納する必要があります。

#cpanel_html/index.php
//DB接続
$_dbc[37] = S_db_connect( $_df['DB_CONF_GEMUTOMO'][37] );
//slave接続(subfunc.incで使うため)
$_dbc[137] = S_db_connect( $_df['DB_CONF_GEMUTOMO'][137] );
wada add_label at 2021-09-24T18:17:54: 和田 LGTM

Comment

#13947 by iwamoto at 2021-09-24T18:47:59; updated 2021-09-24T18:47:59

@kouho
管理画面判定変数m_user_info.incを確認しました。
動作問題ないように思います。

iwamoto add_label at 2021-09-24T18:48:04: 岩本 LGTM
kouho merge at 2021-09-24T18:56:25: 【即時】管理画面ではapiのカウントアップをしない
kouho close at 2021-09-24T18:56:25: Close

Commit range

baseae33edbb4a40be33c7246063b32f23bc83873f1c
head95ecad14823e0ce70be5fee3144c7216f6000234
base branchjolly/jr-web:cpanel
head branchjolly/jr-web:api_countfix_cpanel

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed2 filesView patch
statusfile
modifiedlib/class/platform/yamada/YamadaAPI.class.php
modifiedlib/cpanel/m_user_info.inc
Patch body is stored as a separate file to keep this page lightweight.