항목이 PHP 및 MySQL에 삽입 된 후 24 시간이 지나면 테이블을 만들고 싶습니다.24 시간 후에 만료되는 SQL 항목
사용자가 내 서버와 상호 작용할 때마다 이전 프로세스를 삭제할 때마다 "삭제 프로세스"를 실행하는 것이 이상적입니다. 더 자주 발생하므로 삭제할 데이터가 많지 않으므로 몇 밀리 초 밖에 걸리지 않습니다.
각 항목에 날짜/시간 값을 추가했습니다.
어떻게하면됩니까?
항목이 PHP 및 MySQL에 삽입 된 후 24 시간이 지나면 테이블을 만들고 싶습니다.24 시간 후에 만료되는 SQL 항목
사용자가 내 서버와 상호 작용할 때마다 이전 프로세스를 삭제할 때마다 "삭제 프로세스"를 실행하는 것이 이상적입니다. 더 자주 발생하므로 삭제할 데이터가 많지 않으므로 몇 밀리 초 밖에 걸리지 않습니다.
각 항목에 날짜/시간 값을 추가했습니다.
어떻게하면됩니까?
당신이 사용할 수있는 MySQL의의 event scheduler 중 하나
만료되면 자동으로 기록을 삭제하려면 :
CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR DO
DELETE FROM my_table WHERE id = 101;
는 모든 만료 된 기록의 자동 제거를 실행하려면 정기적 인 기준 :
CREATE EVENT delete_all_expired
ON SCHEDULE EVERY HOUR DO
DELETE FROM my_table WHERE expiry < NOW();
Cron Job을 사용하여 살펴볼 수 있습니다. 요구 사항과 일치하는 24 시간마다 한 번씩 실행하십시오.
이 사용자가 상호 작용 할 때 삭제 처리를하지 말아야
DELETE FROM table WHERE added < FROM_UNIXTIME(UNIX_TIMESTAMP()-24*60*60)
EXPLAIN
(MySQL Manual)를 사용하여 인덱스 (MySQL Manual)정확한 24 시간 정밀도가 필요한 경우 테이블에 대한 쿼리도 제한해야합니다. 그러나 IMO가 최선의 방법입니다. 이 테이블은 이미 InnoDB 엔진에 적합하지 않은 경우에 가장 적합 할 것이다. –
사용자가 내 서버 *와 상호 작용할 때마다 *는 무엇을 의미합니까? –
이 (중복 된) 질문에 대한 답변을보십시오 : http://stackoverflow.com/questions/9472167/what-is-the-best-way-to-delete-old-rows-from-mysql-on- a-rolling-basis – Rex
어느 부분이 당신에게 불명확합니까? PHP? SQL? – RedFilter