묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
setPoint 질문드립니다
2019.08.21 08:01
안녕하세요
외부서버의 조건에 의해 외부에서 php를 호출하여 회원에게 포인트를 증감하는 모듈을 구현중인데
관리자페이지에서 수동으로 하면 잘 되는데, 직접 만든 php를 호출하면 캐시가 깨지는지 제대로 작동이 안되는 것 같습니다.
<?php
define('__ZBXE__', true);
define('__XE__', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
$user_id = $_GET["user_id"];
$user_id = trim($user_id);
$user_id = strtolower($user_id);
$point = $_GET["addPoint"];
$point = trim($point);
$point = (int)$point;
$oMemberModel = getModel('member');
$member_info = $oMemberModel->getMemberInfoByEmailAddress($user_id);
$action = 'add';
if($point < 0){
$action = 'minus';
}
$oPointController = getController('point');
$output = $oPointController->setPoint($member_info->member_srl, $point, $action);
echo('OK|output:'.$output);
echo('|point:'.$point);
echo('|action:'.$action);
$oContext->close();
?>
define('__ZBXE__', true);
define('__XE__', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
$user_id = $_GET["user_id"];
$user_id = trim($user_id);
$user_id = strtolower($user_id);
$point = $_GET["addPoint"];
$point = trim($point);
$point = (int)$point;
$oMemberModel = getModel('member');
$member_info = $oMemberModel->getMemberInfoByEmailAddress($user_id);
$action = 'add';
if($point < 0){
$action = 'minus';
}
$oPointController = getController('point');
$output = $oPointController->setPoint($member_info->member_srl, $point, $action);
echo('OK|output:'.$output);
echo('|point:'.$point);
echo('|action:'.$action);
$oContext->close();
?>
echo 값은 OK|output:|point:3|action:add
이렇게 표시되는데, 반영될때도 있고, 안될때도 있고, 다른값이 추가될때도 있고 이상하네요..
어디가 잘못되었는지 조언좀 부탁드립니다.
감사합니다.
댓글 3
-
SimpleCode
2019.08.21 08:13
-
asdf
2019.08.21 08:18
OK|output:BaseObject Object
(
[error] => 0
[message] => success
[variables] => Array
(
[_query] => UPDATE `rx_point` AS `point` SET `point` = ? WHERE `member_srl` = ?
[_elapsed_time] => 0.00032
)
[httpStatusCode] => 200
)
|point:3|action:add이렇게 나오네요...
SET `point` = ? WHERE `member_srl` = ?
테스트케이스
최초 포인트 10
php 로 포인트 +5관리자로 포인트 +1
이러면, 16이 되어야하는데, 이상한값이 뜨네요... (11이 될때도 있고 아닐때도 있네요...)
* 테스트케이스 정리 : php로 최초 1회는 DB 에 적용되는데, 2회 이상부터는 적용이 안되네요...
관리자로 지급/차감 후에 최초 1회만 작동하네요... 어디가 잘못인지 통 못찾고있네요.. ㅠ -
asdf
2019.08.22 06:57
자답 :
캐시삭제 경로가 상대경로로 되어있어서, 분기를 해줘야 함
개발 계정에 올려놓고 테스트 해봤는데, 소스코드 상에는 이상이 없는 것 같습니다.
위 소스코드 대신에 아래 소스코드를 적어보세요.
저는 이렇게 나왔습니다.
OK|output:BaseObject Object ( [error] => 0 [message] => success [variables] => Array ( [_query] => UPDATE `xe_point` as `point` SET `point` = ? WHERE `member_srl` = ? [_elapsed_time] => 0.00029 ) [httpStatusCode] => ) |point:50|action:add