30 초 실행 시간에 얼마나 많은 Mail () 기능을 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1670767

  •  13-09-2019
  •  | 
  •  

문제

뉴스 레터 구독자에게 이메일을 보내는 페이지를 만들어야합니다. 14000 명 이상의 가입자가 있습니다. php mail () 함수를 사용하여 이메일을 보내고 싶습니다. 그러나 PHP 30SEC MAX_EXECUTION_TIME 한도의 모든 가입자에게 이메일을 보낼 수는 없습니다. 가입자에게 테스트 이메일을 보내면 얼마나 많은 이메일을 보낼 수 있는지 테스트 할 수 없습니다. 따라서 30 초 max_execution_time 제한으로 Mail () 함수로 이메일을 보낼 수있는 이메일의 양을 알고 싶습니다. 대답 할 수 있다면 매우 도움이 될 것입니다.

또한 또 다른 질문 - MySQL 실행 시간도 PHP에서 계산됩니까?

Apache 버전 2.2.13 (UNIX) PHP 버전 5.2.11

도움이 되었습니까?

해결책

PHP max_execution_time 설정이 사용자 정의 가능합니다. 30 초는 기본이지만 설정할 수 있습니다. 0 실행 시간 제한이 전혀없는 초. 사용 set_time_limit ().

set_time_limit(0);

이렇게하면 모든 이메일을 보낼 수 있어야합니다.

초당 동일한 메일 서버로 둘 이상의 이메일을 보내는 데주의하십시오. 당신은 블랙리스트를 받고 싶지 않습니다.

다른 팁

Cronjob에서 이것을 실행하거나 배경 작업을 스폰하거나 배치 작업에 더 적합한 것을 사용해야합니다.

MailServer가 충분히 빠르면 30SEC에서 14000 개의 이메일을 얻을 수 있지만 가입자가 몇 명 더 있고 제대로 작동하지 않으면 어떻게됩니까?

아마도 각 사용자의 데이터베이스에서 플래그를 설정 한 다음 배경 작업에 의해 이메일이 전송 될 때 플래그를 재설정 할 수 있습니다. 메일 서버에 문제가있는 경우 복제를 피하는 데 도움이됩니다.

이는 단일 답변이 불가능한 많은 변수에 따라 다릅니다. 다음과 같은 요인

  1. CPU의 속도
  2. 전송 시스템에서 MTA로 사용할 수있는 대역폭
  3. MTA의 이메일 수락 능력

알아낼 수있는 유일한 방법은 시도하는 것입니다.

나는 내 프로젝트 중 하나 에서이 정확한 문제가있었습니다. 솔루션은 실제 사이트에서 전송하는 이메일을 격리하는 것입니다.

이메일을 보내도록 부름받은 작은 수업을 코딩했습니다. 템플릿 이메일이 전달되고 메일 대기열의 데이터베이스에 저장됩니다. 백엔드에는 x 초마다 메일러 스크립트라고 불리는 Cron 작업이있었습니다. 스크립트는 이메일에 대한 데이터베이스 큐를보고 큐에서 x 번호를 잡아서 보내기 (Timestamp in)를 보내려고 시도한 다음 배송을 시도합니다. 오류가 발생하지 않았다고 가정하면 스크립트는 메시지를 보내는대로 표시합니다. 다음 단계는 X 일보다 오래된 대기열에서 모든 이메일을 제거하는 것입니다 (로깅을 위해 보관).

도움이되기를 바랍니다.

진지하게, 일반 MailApp에서 동일한 메일을 10 명에게 보내려면 일반적으로 동일한 메일 10 개를 생성합니까, 아니면 수신자를 보내기 목록에 추가하면 메일을 보내십니까?

편집하다: 대답이 "한 번 보내기"라면 여기에 그 방향을보아야한다고 생각합니다 (여러 수신자에게 보내는 방법도 설명되어 있습니다. http://www.php.net/mail)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top