등록된 모든회원에게 포인트 100을 일괄지급하려고 합니다 어떻게 해야...??

등록된 모든회원에게 포인트 100을 일괄지급하려고 합니다 어떻게 해야...??

QA

등록된 모든회원에게 포인트 100을 일괄지급하려고 합니다 어떻게 해야...??

본문

등록된 모든 회원에게 포인트 100을 모두에게 주려고 합니다.

일괄지급하려면 어떻게 해야 하나요.?

이 질문에 댓글 쓰기 :

답변 3

전체 회원 3만명이라면

select 쿼리 9만번 , insert쿼리 3만번, update쿼리 3만번 정도 해야 할 것입니다

브라우저가 버티지 못하는 것이 아니라 디비 및 php에서 timeout 걸려 끝까지 진행 되지않겠군요

 

function insert_point로 한명씩 처리해서는 안될 것이고

회원을 1천~2천명씩 추출해서 일괄 처리하도록 코드를 만들면 되겠습니다

(이미 처리가 된 회원이 있다면 제외하는 코드를 넣어여 합니다)

 

대충 큰 줄기만 설명 하면 방법은 이렇습니다

$ss,  $ee 는 1~ 1000, 1001~2000 이렇게 들어가도록 for문으로 구성(mb_no 값으로 1000명씩 추출)

for($i=0; ~~~){

$qq=sql_query("select mb_id, mb_point from {$g5['member_table']} where mb_leave_date='' and mb_intercept_date='' and mb_no > $ss and mb_no < $ee " );

 

위에서 나온 값으로 입력 쿼리 생성

$point = 100;

while($row = sql_fetch_array($qq)){

$qry .=$deli. "('$mb_id','$date', '$content','$point' ~~~~ 이런 형식

$deli =',';

 

1000명에 대한 위 쿼리가 완료되면 insert

sql_query("insert into {$g5['member_table']} (mb_id,po_datetime,~~~) values $qry ");

 

3만명에 대하여 위 쿼리 실행 후 모든 회원 합계 포인트 update

 sql_query("update {$g5['member_table']} set mb_point = mb_point +$point where mb_leave_date='' and mb_intercept_date='' ");

 

 

 

 

 

 

 

 

 

성심성의것 답변 주신거 대단히  감사합니다.!
그런데 제가 균이님께서 생각하는 그정도의 수준이 아니라서...
답변 대단히 감사합니다.

이거 하다 포인트가 이중삼중으로 포인트가 주어저 phpmyadmin 으로 포인트 삭제를 하다
또 문제가 생겼습니다. 그래서 또 질문하기에 글 남겼는데 혹시 아실수 있는 답변이라면 답변 주시면 감사하겠습니다.

https://gnustudy.com/bbs/board.php?bo_table=gnu_pds&wr_id=42

적용을 해 보았는데
전체 회원이 3만명에게 포인트 주기를 주었다나 브라우져가 비티질 못하고 504 에러가 뜨네요

sql 명령어가 있으면 알려주시면 감사하겠습니다.

찾아보니 제가 필요했던 소스가 있더군요
저처럼 필요하신 분이 계실것이라 생각하고 참고자료로 적어놓습니다.
응용해서 잘쓰세요


<?php 
// 전체 회원에게 포인트 일괄 지급하는 소스 코드 
// 탈퇴회원 및 접근금지 회원은 제외 
include_once ("./_common.php"); 
 
$point = "3000"; //지급포인트 
$point_msg = "추석 특별 포인트 지급"; // 포인트내역 
 
if ($is_admin != "super") 
  echo "관리자로 접속하세요."; 
else 
{ 
    $sql = " select mb_id from $g5[member_table] where mb_id<>'{$config[cf_admin]}' and mb_leave_date='' and mb_intercept_date='' "; 
    $result = sql_query($sql); 
    while($row = sql_fetch_array($result)) 
    { 
            $mb_id = $row[mb_id]; 
            insert_point($mb_id, $point, $point_msg, "@event", $mb_id, G5_TIME_YMDHIS); 
    } 
  echo "$point_msg 완료"; 
} 
?> 

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT