aus text datei nach id div komplett löschen

hups1803

Erfahrenes Mitglied
ich habe folgendes problem:

ich schreibe mit ajax per post in eine datei log.txt diverse divs das sieht nach 3 einträgen so aus .

Ich mache das in eine txt datei weil diese sich nach 10 sek refresht und ich die datenbank nicht belasten möchte.

PHP:
<div id="1387114757" class="gritter-notice-wrapper"style="float:left">
			<div class="gritter-item-wrapper gritter-light" >
			<div class="gritter-top"></div>
			<div class="gritter-item">
			<a class="gritter-close" href="#" tabindex="1">Close Notification</a>
			<div class="gritter-without-image">
			<p>
			test0
			</p>
			<p>
			test0
			</p>
			</div>
			<div style="clear:both"></div>
			</div>
			<div class="gritter-bottom"></div>
			</div>
	  </div><div id="1387114810" class="gritter-notice-wrapper"style="float:left">
			<div class="gritter-item-wrapper gritter-light" >
			<div class="gritter-top"></div>
			<div class="gritter-item">
			<a class="gritter-close" href="#" tabindex="1">Close Notification</a>
			<div class="gritter-without-image">
			<p>
			test1
			</p>
			<p>
			test1
			</p>
			</div>
			<div style="clear:both"></div>
			</div>
			<div class="gritter-bottom"></div>
			</div>
	  </div><div id="1387203404" class="gritter-notice-wrapper"style="float:left">
			<div class="gritter-item-wrapper gritter-light" >
			<div class="gritter-top"></div>
			<div class="gritter-item">
			<a class="gritter-close" href="#" tabindex="1">Close Notification</a>
			<div class="gritter-without-image">
			<p>
			test2
			</p>
			<p>
			test2
			</p>
			</div>
			<div style="clear:both"></div>
			</div>
			<div class="gritter-bottom"></div>
			</div>
	  </div>

Wobei die id ein timestamp ist .

Nun möchte ich z.b alle div's komplett löschen die eine id haben die kleiner ist als $time

PHP:
$time=time() -60;

ich habe mal so angesetzt

PHP:
$id = $_GET["id"]; 
$id--; 
$datei = "log.txt";
$array = file("log.txt"); 
unset($array[$id]);

das ging aber daneben finde nicht den ansatz, ich könnte mir vorstellen in dem array alles zu löschen was kleiner als $time ist und dann alles wieder zurückzuschreiben.

habe aber kein plan wie das geht, das schreiben ja, aber wie lösche ich nun den kompletten div von <div id="" bis </div>
 
Ich mache das in eine txt datei weil diese sich nach 10 sek refresht und ich die datenbank nicht belasten möchte.

Erstmal dazu: nutze lieber die Datenbank. Die sind optimiert für solche Angelegenheiten.

Dein Ansatz ist teilweise richtig, allerdings speicherst du die geänderten Datei nicht mehr zurück in die Datei. Du lädst sie und veränderst die Daten, aber dabei bleibt es auch.
Füge dies hinzu:
[phpf]
file_put_contents('log.txt', implode(PHP_EOL, $array));
[/phpf]
[phpf]file_put_contents[/phpf] schreibt in eine Datei.
[phpf]implode[/phpf] fügt das Array wieder zusammen in einen riesigen String, hier mit PHP_EOL getrennt (entweder \n oder \r\n).
 
würde es auch lieber in der db machen meinst du bei einen refresh also eine abfrage der db alle 10 sek das nicht ein bissel viel für den server
 
Wie viel Nutzer hast du?

Alle 10 Sekunden geht locker. Da ist das Auslesen der ganzen Datei viel kostspieliger!
 
Zurück