2012-04-30 4 views
1

기본적으로 30 일이 지난 후 로그인하지 않은 계정의 활동을 수행하기 위해 메일러 시스템을 작성하여 비활성 회원에게 보냅니다.유닉스 타임 스탬프에 대한 도움이 필요합니다.

내 이전 로그인 날짜가 내 데이터베이스에 unixtimestamp로 저장되므로 아래 코드와 같이 코딩되었습니다.

select email from myusers where WHERE DATE_ADD(FROM_UNIXTIME(prelogin), INTERVAL 30 DAY) < CURDATE()"; 

그러나이 코드는 30 일 후에 하루에 한 번씩 실행되도록 cron을 설정 했으므로 거의 매일 계속 메일을 보냅니다.

답변

1

만 이메일이 30 일을 보내, 그들은 30 일 동안 로그인하지 않은 경우에만, 내가 가장 쉬운 해결책은 테이블에있는 다른 열이 last_email_sent_time 같은라는 해야하는 것입니다 의심 원하는 가정.

그런 다음 prelogin 새 항목이 최소 30 일 이상 지난 경우에만 이메일을 보내주십시오.

이메일을 보낼 때 새 열을 현재 날짜로 업데이트하면 다른 달에 대해 신경 쓸 필요가 없습니다. 당신은 단지 그들이 삼십 일 동안 로그인하지 않은 후 이메일 일단 를 전송하려면 다른 한편으로


, 그것은 비슷한 일입니다.

전자 메일이 전송되었음을 나타내는 새 열을 만들고 해당 열이 false 인 경우에만 (또는 N 또는 표시하려는 용도로) 원하는 경우에만 보내십시오. 전송하면 해당 열이 true로 설정되고 로그인하면 false로 설정됩니다 (변경하려면 prelogin).


당신이 아닌 경우이 (어떤 이상한 이유로) 여분의 열을 추가 할 당신은 이메일을 보낼 때 내가 제안 편안 해요 것이 아닙니다 비록이 정보가 손실 때문에, 당신은 단순히, prelogin를 업데이트 할 수 다른 곳에서 (또는 유용하게) 사용될 수 있습니다.

+0

멋진 트릭을 생각하지는 않았지만 올바른 쿼리를 사용할 수 없습니까? – sammry

+0

@sammry, 종속되어 있습니다. 가장 최근에 로그인 한 후 30 일을 원하는 경우, 'WHERE DATE_ADD (FROM_UNIXTIME (prelogin), INTERVAL 30 DAY) paxdiablo

+0

나는 = 함께 시도했지만 그다음에는이 포럼에 게시했습니다. – sammry

관련 문제