2010-02-12 3 views
0

내 응용 프로그램에는 데이터베이스에 여러 레코드를 쓰고 서버의 한 위치에서 여러 파일을 복사 한 다음 여러 전자 메일을 보내는 긴 스크립트가 있습니다.PHP가 전자 메일을 보내고 있습니다

간헐적으로 프로세스가 시간 초과됨을 확인했습니다. 일부 디버깅 후 우리는 메일을 보내는 동안 일반적으로 시간 초과가 발생했다는 점을 지적하고 PHP mail()과 호스팅 된 Windows 서버를 사용하고 있습니다. 호스트는 CPU 사용량이이 스크립트 중에 급증한 것 같다고 말하면 어떨까요? 나는 메일이 집중적이라고 생각하지 않았다?

나는 메일을 대기열에 두는 것이 더 나을 것이라고 생각했지만, 배는 실행되지 않아서 mail_queue를 사용할 수 없지만 데이터베이스에 전자 메일 데이터를 쓰고 스크립트를 실행하기 위해 cron/scheduled 작업을 설정한다고 생각했습니다. 매일 밤 테이블의 첫 번째 레코드를 처리하기 위해 이메일을 보낸 후 레코드를 삭제 한 다음 다시 실행하여 제한 시간을 피합니다. 어쩌면 이것은 또한 성가신 솔루션입니다 .. 모든 의견은 크게 감사하겠습니다.

+0

리눅스에서 변경할 수있는 스크립트 시간 초과 매개 변수가 있습니다. 창에 대해서는 잘 모릅니다. 당신이 할 수 없다면, 스크립트는 일정량 (예 : x, 10)의 메일을 보낼 수 있습니다. 메일은 제한 시간 이하일 수 있습니다. – Julien

+0

당신은 스크립트의 타임 아웃을 변경할 수 있지만 큐는 더 유연한 솔루션입니다. 보내지 마라. drupal은 cron이 실행될 때마다 그 중 몇 개를 보낸다. 서버 오버로드, 연결, 전자 메일의 크기 등에 따라 달라진다. X 전자 메일을 보내기 전에 스크립트가 테스트되지 않는다. – useless

답변

1

모든 이메일을 보내려면 SwiftMailer를 사용하는 것이 좋습니다. 당신은 그것으로 배치를 보낼 수 있습니다. 당신이 보내는 이메일의 제비가있는 경우

http://www.swiftmailer.org

는 큐 시스템은 최고입니다.

관련 문제