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

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

QA

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

답변 3

본문

등록된 모든 회원에게 포인트 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

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


<?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 완료"; 
} 
?> 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 17,127
© SIRSOFT
현재 페이지 제일 처음으로