Autor Zpráva
Trim
Profil
Ahoj, mám diskusi napojenou na textový soubor, nevíte, jak udělat automatické mazání zprávy? :-)
lionel messi
Profil
Trim:
jak udělat automatické mazání zprávy?

1) Na čom má byť mazanie správ závislé? Na dátume? Ukladaj si do toho súboru niekde ku každej správe jej dátum. Ako formát skús napr. JSON (v php sa ti budú hodiť funkcie json_decode a json_encode). Ak mažeš staršie než x dní, tak si vytiahni obsah súboru, rozkúskuj na jednotlivé jsony, tie si skonvertuj na polia (alebo objekty), porovnaj hodnotu dátumu s hodnotou dnes - x dní, zmaž tie staršie a prepíš obsah súboru jsonmi, ktoré ti zostali. Môžeš si to púšťať cronom a podobne na serveri.

Pozor na atomicitu operácii Atomicita operací

2) Nebolo by lepšie naozaj prejsť na databázu?
Trim
Profil
Chtěl bych to udělat tak, že kdyby bylo v chatu třeba 10 zpráv, tak by se prvních 5 vymazalo…
lionel messi
Profil
Trim:

Majme súbor chat.csv, kde platí 1 riadok = 1 záznam a nové ukladáme vždy na koniec.

$filename = "chat.csv";
$separator = PHP_EOL;
$maxMessagesCount = 10;
$messagesToDelete = 5;

$contentOfFile = file_get_contents($filename);
$messages = explode($separator, $contentOfFile);
$messagesCount = count($messages);

if ($messagesCount >= $maxMessagesCount) {
  for ($i = 1; $i <= $messagesToDelete; $i++) {
    unset($messages[$i - 1]); //polia sa v php predvolene číslujú od nuly
  }
  $newContentOfFile = implode($separator, $messages);
  file_put_contents($filename, $newContentOfFile);
}

Ešte si v praxi vždy treba overiť, či sa súbor podarilo načítať a uložiť, ale ide tu o mazanie.
Trim
Profil
Díky moc, funguje! :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0