Autor | Zpráva | ||
---|---|---|---|
jany Profil |
Dobry den,
hned na zaciatok sa priznam, ze nie som programator, ale potrebujem vyriesit jeden problem. V LAN sieti mam router mikrotik, ktory loguje prevadzku siete a data odosiela na syslog server. Mikrotik som nastavoval podla tohto navodu. Logy sa zapisuju, vsetko funguje v poriadku. Aby som tie logy nemusel (v pripade problemov) lustit z textakov, tak som zase podla tohto navodu poslal data z textakov do MariaDB (mySQL). Pouzil som tieto skripty index.php a fetch.php. Vsetko funguje perfektne. DB sa ale zaplna a ked obsahuje strasne vela riadkov, tak tie posledne riadky zacnem mazat, ale rucne v phpmyadmin (oznacujem to po 500 a mazem (ked mam tam 50000-70000 riadkov, tak to da zabrat :) )) Prto by som potreboval poradit, ako mazat data starsie ako mesiac (prip. 2 mesiace). Hladal som nieco a nasiel som toto chcem sa teda opytat ci by to fungovalo ak by som to nastavil podla svojich udajov $sql ="DELETE FROM `logs` WHERE `datetime` < DATE_SUB(NOW(), INTERVAL 2 MONTH)"; echo json_encode($output); |
||
blaaablaaa Profil |
jany:
Pokud to není potřeba kvůli místu apod, není problém je v db nechat. Jinak ještě je potřeba ten dotaz provést. mysqli_query($connect, $sql); |
||
Kajman Profil |
#3 · Zasláno: 25. 9. 2019, 10:36:04
Případně, pokud je ten soubor fetch.php volaný často, mohlo by být vhodnější promazávat jen jednou denně, např. příkazem v cronu (heslo bude vidět v cronu i seznamu procesů). Tedy něco jako
mysql -h localhost -D nazevdatabaze -u jmenouzivatele -pheslo --execute "DELETE FROM nazevtabulky WHERE nazevsloupce < DATE_SUB(NOW(), INTERVAL 2 MONTH)" |
||
blaaablaaa Profil |
#4 · Zasláno: 25. 9. 2019, 10:43:59
A ještě doplním, že na tom sloupci je dobré mít index.
|
||
jany Profil |
#5 · Zasláno: 25. 9. 2019, 11:31:55
vdaka za odpovede, ako som spomenul, nie som programator, takze sa spolieham na Vas. Mne ide o to, aby to fungovalo. Takze subor fetch.php konci takto
mysqli_query($connect, $sql); $sql ="DELETE FROM `logs` WHERE `datetime` < DATE_SUB(NOW(), INTERVAL 1 DAY)"; ?> |
||
blaaablaaa Profil |
#6 · Zasláno: 25. 9. 2019, 11:45:08
jany:
Naopak (nejdřív si do proměnné uložíš ten dotaz a pak ho vykonáš) $sql ="DELETE FROM `logs` WHERE `datetime` < DATE_SUB(NOW(), INTERVAL 1 DAY)"; mysqli_query($connect, $sql); |
||
jany Profil |
#7 · Zasláno: 25. 9. 2019, 13:08:28
Takze funguje to dobre. Aj ked mam nastavene len 1 day, tak mi to maze riadky s pred 24 hodin (cize tabulka obsahuje data vzdy len za 24 hodin). Myslel som si, ze to zmaze cely predosly den (niekedy o pol noci). Je to este lepsie ako som si myslel :-D
Takze si to nastavim na 2 mesiace vdaka chlapi |
||
Časová prodleva: 6 let
|
0