오늘은 대한입니다.
sun's longitude:299 54 14.10 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1328 번 글: 리눅스 서버에서 php를 이용해 메일보내기에 대한 질문입니다.
글쓴이: 이상엽 글쓴날: 2003년 02월 13일 13:17:52 목(오후) 조회: 707
안녕하세요.

제가 리눅스 서버에서 php를 이용해 회원에게 메일보내는
페이지를
만들었는데, 걍 이것저것 보고 뚝딱뚝딱 만들어서 인지 문제가
많이
발생합니다.

일단 회원수는 2000명 정도이고요, 오라클 디비에서 회원주소를
읽어옵니다.

문제가 되는점은 2000명 정도되는 회원에게 HTML로 된 문서를
메일로 보내는데, 웹상에서 페이지를 읽어오는 중에 '작업취소'
화면이 뜹니다.

php로 서버에 메일보낸 로그를 텍스트로 남겨서 보면 한 200명 -
700명 정도 보내고 멈춰버리더군요.


또 회원주소 읽어오는 SQL문에 그다음 주소부터 읽어오게
한다음 다시 보내면, 잘 가다가 또 웹페이지를 찾을수 없다며,
멈춰버리는 경우가 많이 생깁니다.

phpschool에서 좀 뒤져보다가, delay나 set_time_limit를 사용해 보라고
해서 젤 위에 set_time_limit(2000) 주고, 메일 50개 보내고 나서
딜레이주고
등의 방법을 사용했지만 결과는 조금더 보내는것 외에는
나아진것이 별로 없습니다.

또, 세번째 문제는 위에서 말한데로 SQL문을 계속고쳐가며, 새로
보내면
이상하게 SQL결과상에 나오지 않는 위에 보냈던 사람한테 다시
메일을 보내버리는 오류가 생기더군요.
결과적으로 2000명 회원한테 메일을 보냈는데 실제로 메일은
3000번 정도 발송이 되고, 몇통씩 같은 메일을 받는 회원이
생깁니다.
어찌해야 할까요?

참..추가적으로
 delay와 set_time_limit를 사용하지 않은 상태에서 보냈을경우,
2000명 전원에게 메일을 발송하지만 대부분 mail 함수에서 오류가
나고 한 300-500명 정도에게만 메일이 가더군요.
set_time_limit를 사용했을경우에는
 중간에 끊겨 버리고...

이문제에 대해 아시면 꼭좀 부탁드립니다.

set_time_limit(2000);

$stmt = get_usermail_a();


while(OCIFetchInto($stmt,&$usermail,OCI_ASSOC)) {

  $name[] = $usermail[NAME];

  $email[] = $usermail[EMAIL];

  $user_id[] = $usermail[USER_ID];

}

위처럼 메일주소를 읽어와서,

for($i=0;$i<sizeof($email);$i++) {

  $sendhtml = $mailhtml;
  if(($totalsend%50)==0) sleep(1);
  $sendhtml =
str_replace("_user_name_","_".$name[$i],$sendhtml);

  $sendhtml = str_replace("_usermail_",$email[$i],$sendhtml);
  if(@mail($email[$i],$mailtitle,$sendhtml,$additional_headers)) {
		
	$totalsend = $totalsend +1;
	$email[$i] = trim($email[$i]);
	fwrite($fp,$email[$i]."\n");
  } else {
	sleep(1);
	$nosend = $nosend +1;
	$email[$i] = trim($email[$i]);
	$name[$i] = trim($name[$i]);
	fwrite($fp2,$email[$i]."__".$name[$i]."\n");
  }

}
위와 같이 메일을 보냅니다.
$sendhtml 이 메일보내는 내용이고,
str_replace부분은
 회원이름쓰기 부분,
메일보내는 mail함수는 if조건문안에서
 돌아가며,
메일보내기가 성공하면, 파일오픈변수 $fp에 기록,
실패하면 $fp2에 기록합니다.

 
이전글 : Re: phpa에 대해서..
다음글 : Re: 리눅스 서버에서 php를 이용해 메일보내기에 대한 질문입니다.  
 from 211.56.244.207
JS(Redhands)Board 0.4 +@

Re: phpa에 대해서.. Re: 리눅스 서버에서 php를 이용해 메일보내기에 대한 질문입니다.
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2026. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds