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)";
A ko by som to mal zakomponovat do suboru fetch.php, staci to dat niekde za
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
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
A ještě doplním, že na tom sloupci je dobré mít index.
jany
Profil
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)";

?>
zatial som si to nastavil na 1 den aby som zistil, ci to bude fungovat a tak musim cakat do zajtra :-D
blaaablaaa
Profil
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0