2011-07-29 2 views
0

사용자 등록을 처리하는 클래스가 있습니다. 두 가지 주요 단계가 있습니다 : 사용자를 mysql 테이블에 삽입 한 다음 삽입이 성공하면 확인 전자 메일을 보냅니다.PHP 및 MySQL 용 쿼리/임시 테이블 캐싱

내가 할 수있는 방법이 있나 ... 일종의 캐시로 전자 메일 보내기 기능이 실패하면 데이터가 삽입되지 않도록하는 첫 번째 단계입니까?

sendmail이 서버에서 활성화되어 있는지 확인하고, 그렇지 않은 경우 쿼리를 수행하지 않을 수도 있습니다. 나는 이것이 대부분의 시간에 효과가있을 것이라고 생각하지만 센드 메일이 활성화되어 있지만 전자 메일을 보내는 데 약간의 오류가있는 경우를 파악하고 싶습니다.

비록 임시 테이블에 모든 데이터를 삽입하고, 메일이 성공적으로 영구 테이블에 행을 복사 보낼 수 있습니다. 이 문제는 데이터를 삽입하는 저장 프로 시저를 호출하고 메일 코드가 응용 프로그램 코드에서 발생하므로 삽입이 완료되면 임시 테이블이 자동 수정 될 것입니다 (올바른 것인가?).

+0

저는 실제로이 문제를 해결할 생각이 없습니다. sendmail이 작동하는지 이미 확인했다면'mail' 호출은 실패 할 수 없습니다. 메일을 배달하거나 반송 할 수 없거나 주소가 실제 서버 또는 그와 비슷한 것을 가리 키지 않으면 ... 메일 호출은 계속 성공할 것이며 메일 서버 만 PHP가 아니라 그 메일을 알고 있습니다. . –

+0

아직도 무언가를하고 싶다면 지나치게 복잡해질 것입니다. mysql_query ("DELETE FROM table WHERE id = LAST_INSERT_ID()"); ... ... 또는이 시점에서 커밋하는 대신 트랜잭션과 롤백을 사용하십시오. –

답변

0

개인적으로 신청서에서 이메일을 보내지 않습니다. 대신 테이블에 전자 메일 정보를 저장하고 cron 작업을 사용하여 적절한 조치를 취할 수 있도록 테이블에서 전자 메일을 보냅니다.

0

댄의 솔루션 "LAST_INSERT_ID()"를 사용 중 하나 또는 경우 먼저 모든 사용자를 삽입하고 전자 우편을 발송하는 것은 나중에 단순히 참조하여 사용자를 삭제하려면 해당 사용자의 이메일 ID를 캐시 :

array('[email protected]' => 123); 

건배