2016-03-23 17 views
3

Ben çerçeveyiHer x dakikada bir nasıl otomatik olarak silinir?

Örneğin

CodeIgniter kullanarak, benim sistem otomatik tablo A'da tüm kayıtları her 2 dakikada bu yapılabilir İster

silmek istediğiniz tablo A. var?

Eğer

+5

Basit cronjob kullanabilirsiniz? –

+2

Ya da 'mysql olayı zamanlayıcı ' – 1000111

+2

kullanabilirsiniz [Mysql içinde otomatik TRUNCATE tablo]' nın olası yinelenen (http://stackoverflow.com/questions/21956291/automatic-truncate-table-in-mysql) – kitensei

cevap

7

bunu sıfırlanacak kesilmiş kısmının Silmek yerine deyimi kullanın.


Önkoşul:

Sen MySQL sunucusu AÇIK event_scheduler olması gerekir.

SET GLOBAL event_scheduler = ON;


Not: yo Eğer olay zamanlayıcı ON veya

SELECT @@event_scheduler;

OFF event_scheduler ON aşağıdaki sorguyu çalıştırmak açmak için ise

kontrol edip MYSQL Server'u yeniden başlattıktan sonra, yapılandırma dosyasında aşağıdakiler yazılmadıkça olay zamanlayıcı durumu sıfırlanacaktır.

Windows için

:my.ini dosyasında Linux için [mysqld] bölüm

[mysqld] 
event_scheduler=on 

altında bunu yazmak:benim de.cnf

[mysqld] 
event_scheduler=on 

Olay dosyası:

aşağıdaki olay tablename adlı tablodan verileri siler.


olay

CREATE 
EVENT `deleteEvent` 
ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 00:00:00' 
ON COMPLETION NOT PRESERVE 
ENABLE 
DO 
DELETE FROM tablename; 
'2016-03-23 00:00:00' de ve olay aralığı her 2 dakikada planlanacaktır bundan sonra ilk defa başlatılacak ve tablodan verileri siler.

DELETE yerine Truncate kullanabilirsiniz.

TRUNCATE vs DELETE

+0

Çok teşekkür ederim. Localhost üzerinde çalışıyor olsun? –

+0

Bir şey değil. Bu olayı localhost mysql sunucusunda çalıştırmak istiyorsanız, yukarıdaki görevi localhost mysql sunucusunda yapın. Ve aynı uzak mysql sunucusu için de geçerlidir. – 1000111

+1

Çok teşekkür ederim –

2

Sen Tablo A'da her 2 dakikada bir tüm kayıtları silmek için bir cronjob kullanabilirsiniz ederiz. PHP betiğinizi (silme işleviyle) web sunucunuzdaki bir Cronjob'e atayın.

+0

Çok teşekkürler –

+0

Cevabım çalışma yöntemiyse lütfen cevabımı kabul edin. – Cornest

+0

Daha iyi olduğunu düşündüğüm başka bir cevap var –

3

En iyi ve en hızlı yolu Silmek yerine Tablo kesecek olacak, böylece her iki etkinliğe By MySQL kendi olay zamanlayıcısı tarafından veya cronjob-

tarafından yapabiliriz Programlayıcı

DELIMITER $$ 

ALTER DEFINER=`root`@`localhost` EVENT `trun_table` ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 16:30:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN 
     truncate table mytable; 
    END$$ 

DELIMITER ; 

Mysql, Linux makinede çalışıyorsa veya Mysql Windows işletim sisteminde çalışıyorsa cronjob tarafından:

"truncate table mytable;" Bir dosyada sözdizimi ve cronjob veya görev zamanlayıcıdan zamanlama.

Not: Tabloda da auto_increment id sıfırlamak istemiyorsanız o zaman sen MySQL olay Zamanlayıcısı kullanabilirsiniz olarak trankulatı deyimi 1.

+0

Çok teşekkür ederim –

+0

Yardımına ihtiyacım var. Buraya bakın: http://stackoverflow.com/questions/38175735/how-to-get-data-in-function-extend-controller –

İlgili konular