API로 받은 데이터, DB업데이트 시 중복체크(1회만 적용) 가능 및 실패체크
본문
API로 받은 데이터, DB업데이트 시 중복체크(1회만 적용) 가능 및 실패체크
1. 보내온 데이터가 이미 있는지 확인(이슈번호로 구별)
2, 있으면 종료 exit; 없으면 업데이트(insert DB)
3. 업데이트 시 받은 데이터에서 DB에서 데이터를 가공하여서 insertDB를 할 예정인데 한번 가공 후 다시 가공은 안하도록 하고, 향후 출금이 되었을 때,
** 문의 1번: 보내온 데이터가 실패 했는지 여부를 체크 하려면 어떤 룰케이스를 적용해 둬야할까요?
(테스트 상에는 하나하나씩은 문제가 없는데 실제로 여러 건들이 많이 빠르게 또는 일시적으로 몰렸을 때 데이터를 받지 못할 것 대비)
** 문의 2번: 종료하는 방법에 아무것도 안쓰면 되는 것인지 아니면 exit; 를 넣어야 하는지 결과는 같은 것 같은데 어떤 부분이 좋은가요?
경험있는 고수님들의 생각을 여쭙습니다.
현재는 위 기능 구현없이 외부 데이터를 다음과 같이 받아서 업데이트(insert)를 하고 있습니다.
include_once('../common.php');
// 컨텐츠 타입이 JSON 인지 확인한다
/*if(!in_array('application/json',explode(';',$_SERVER['CONTENT_TYPE']))){
echo json_encode(array('result_code' => '400'));
exit;
}
*/
if(!in_array('application/x-www-form-urlencoded',explode(';',$_SERVER['CONTENT_TYPE']))){
echo json_encode(array('result_code' => '400'));
exit;
}
$arr = $_POST ? $_POST : $_GET;
foreach($arr as $key => $value) {
${$key} = $value;
}
$data = json_decode(stripslashes($_POST['response']), true);
답변 3
1. 데이터가 실패를 했는지 여부를 체크하려면 db상에 Y,N을 기입하는 필드를 넣으시고
데이터가 정상이면 Y, 실패면 N을 넣으시고 상단에서 체크하시면 되지않을까요?
2. 해당 페이지는 api를 받는 페이지 인거 같은데
api를 보내주는 쪽에서 보내기만하고, 결과를 따로 요청하지 않았다면
exit;를 하셔도, 안하셔도 무방합니다.
저는 보통 exit로 해당 페이지의 하단을 종료시킵니다.
그리고 코드상에 post인지 get인지 구분하는 부분이있는데
굳이 그렇게 하지않으시고
foreach($_REQUEST as $key => $value) {
${$key} = $value;
}
형태로 간단하게 처리하셔도됩니다.
api를보니 광원 가상계좌 api를 사용하시는듯한데,
궁금하신것 도와드릴테니 쪽지로 연락처남겨주세요.
!-->데이터를 받는것은 모두 테이블에 기록해야합니다.
금액이 관련되있다보니 로그가 핵심입니다.
그리고 디비 속도는 하드웨어의 영향도 많이 받으니
추후 부화가되면 고사양 서버를 사용하는게 좋습니다.
보통 member테이블에는 회원정보만 넣어서 쓰도록하고
다른 테이블을 사용해서 금액을 연동해야합니다.
같은 api로 구현을 많이 해봣으니 필요하면 말씀하세요