PR

【即時】集金レポート更新時はキャッシュデータ削除 #1125

wada opened this at 2021-09-10T10:51:56; closed

Description

opened by wada at 2021-09-10T10:51:56; updated 2025-06-27T15:36:56

概要

集金レポートの過去データがループしている
S_GetUserGoldCollectReport() で、キャッシュからデータを取得した後に、returnせずに集金レポートを追加で作成すると再現する
<img src="https://git.dev.d-es.co.jp/gitbucket/jolly/jr-web/_attached/1631238491914CGjS5JPgms" width="300">

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

$return_data = S_GetMemcachedToDB( $memcache_name ) した後にreturnせずに、以降の処理を続けてください
if文内の処理を全てコメントアウトすると確認しやすいです

function S_GetUserGoldCollectReport($user_no) {
...
    if($return_data = S_GetMemcachedToDB( $memcache_name )){
        // //日付が変わったら一度データを更新したい。キャッシュ保存日をチェック
        // if($return_data['save_time'] == strtotime(date('Y-m-d 00:00:00', $time))) {
        //     if(!$return_data['aggregating']) {
        //         //日付は変わっていないし、集計中でもない
        //         return $merge_report($user_no, $return_data);
        //     }else {
        //         //前回、集金レポートを見たときは、昨日分が集計中だった
        //         if($time > strtotime(date('Y-m-d 00:30:00', $time))) {
        //             //0時半を過ぎているのでDBからデータを再取得
        //             $return_data = array();
        //         }else {
        //             //まだ集計中
        //             return $merge_report($user_no, $return_data);
        //         }
        //     }
        // }
        // $return_data = [];
    }

Comment

#13585 by wada at 2021-09-10T10:53:19; updated 2021-09-10T10:53:19

@iwamoto @kouho
早めにレビューをお願いします。

wada change_title at 2021-09-10T10:53:30: 集金レポート更新時はキャッシュデータ削除 【即時】集金レポート更新時はキャッシュデータ削除

Comment

#13589 by kouho at 2021-09-10T11:19:18; updated 2021-09-10T11:19:18

@wada
ループの再現がしないのですが、確認方法はどうすれば良いのでしょうか?
以下の方法で試してみました。

  • daily_user_collect_goldに4~8月分のデータを入れる
  • $return_data = [];をコメントアウト
  • 集金レポートページを確認

Comment

#13590 by wada at 2021-09-10T11:22:25; updated 2021-09-10T11:22:25

@kouho
キャッシュ取得成功後の処理を全てコメントアウトしてみてください。

function S_GetUserGoldCollectReport($user_no) {
...
	if($return_data = S_GetMemcachedToDB( $memcache_name )){
		// //日付が変わったら一度データを更新したい。キャッシュ保存日をチェック
		// if($return_data['save_time'] == strtotime(date('Y-m-d 00:00:00', $time))) {
		// 	if(!$return_data['aggregating']) {
		// 		//日付は変わっていないし、集計中でもない
		// 		return $merge_report($user_no, $return_data);
		// 	}else {
		// 		//前回、集金レポートを見たときは、昨日分が集計中だった
		// 		if($time > strtotime(date('Y-m-d 00:30:00', $time))) {
		// 			//0時半を過ぎているのでDBからデータを再取得
		// 			$return_data = array();
		// 		}else {
		// 			//まだ集計中
		// 			return $merge_report($user_no, $return_data);
		// 		}
		// 	}
		// }
		// $return_data = [];
	}

Comment

#13591 by kouho at 2021-09-10T11:31:32; updated 2021-09-10T11:31:32

@wada
ありがとうございます。ループの確認と修正確認しました。OKだと思います。

kouho add_label at 2021-09-10T11:31:39: 皇甫 LGTM

Comment

#13593 by iwamoto at 2021-09-10T11:55:07; updated 2021-09-10T11:55:07

@wada
確認しました、問題ないと思います。

iwamoto add_label at 2021-09-10T11:55:12: 岩本 LGTM
wada merge at 2021-09-10T12:07:44: 【即時】集金レポート更新時はキャッシュデータ削除
wada close at 2021-09-10T12:07:44: Close

Commit range

base12e5e509b5f9bad4fe95ade9ee4fcab96b3f1e84
head80fcd4accbfd959037690c9875ac76effb099f5b
base branchjolly/jr-web:master
head branchjolly/jr-web:fix_gold_report

View commits

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