zeilen aus textdatei auslesen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

zeilen aus textdatei auslesen

Beitrag von Ambience »

Hallo,


ich möchte gerne die letzten 23 Zeilen einer Textdatei auslesen...

Ich würde liebend gerne die ersten 23 zeilen hohlen das wäre mit einer schleife schnell gemacht, aber mit php kann man in txtdateien nur text ans dateiende einfügen, somit brauch ich die letzten 23 zeilen...

Leider hab ich keine Ahnung wie ich da vorgehen muss, damit ich die letzen 23 zeilen bekomme.

Wäre sehr dankbar für Hilfe


Ambience
homoerectus
Mitglied
Beiträge: 252
Registriert: 10.11.2005 12:30

Beitrag von homoerectus »

Ambience hat geschrieben:aber mit php kann man in txtdateien nur text ans dateiende einfügen, somit brauch ich die letzten 23 zeilen...
Doch, das geht, aber etwas umständlicher:
Zuerst den Dateiinhalt in eine Variable speichern, dann die neuen Daten und dahinter die alten Daten speichern, zB so:

Code: Alles auswählen

file_put_contents("blabla.txt", "$neue_daten\r\n$alte_daten");
Schöne Grüße

PS: Zu groß sollte die Datei natürlich nicht sein...
phpBB.de: link:Suche || link:doku || link:FAQ || link:KB || KB-Übersicht
außerdem:
Google || Wikipedia || SelfHTML
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

hmm naja, wenn das die einzige möglichkeit ist...

ist eine txt datei eines chattes.. denke ca. 1MB wird die groß.. hab mir da noch keine gedanken gemacht ab wann ich anfang zu löschen.. erstmal die richtigen einträge haben will^^

edit:

Code: Alles auswählen

$handle = fopen('../messages/m_main.txt', 'r');
  
  while($zeile = fgets($handle, 4096))
  {
    $messages[] = $zeile . "\n\r";
  }
  
  $put_content = time() . '|' . $name . '|' . htmlspecialchars($message) . "\n\r";
  
  foreach ($messages as $message)
  {
    $put_content .= $message;
  }

  fclose($handle);
  
  file_put_contents('../messages/m_main.txt', $put_content);
hab es so versucht, scheint aber nicht zu funktionieren :-(

hab erst alle nachrichten geholt und in ein array... danach die neue nachricht erstellt... im foreach dann die neue nachricht am anfang und die alten am schluss... scheint aber nicht zu funktionieren.


Ambience
homoerectus
Mitglied
Beiträge: 252
Registriert: 10.11.2005 12:30

Beitrag von homoerectus »

Hallo,

kann mir das nicht wirklich erklären, aber versuch vielleicht ma so:

Code: Alles auswählen

$file_content = file_get_contents("../messages/m_main.txt");
$file_add_content = time() . "|" . $name . "|" . htmlspecialchars($message) . "\r\n";
$file_content = $file_add_content . $file_content;
if(file_put_contents("../messages/m_main.txt", $file_content)) {
	echo "Daten erfolgreich in Datei geschrieben.";
}
Schöne Grüße
phpBB.de: link:Suche || link:doku || link:FAQ || link:KB || KB-Übersicht
außerdem:
Google || Wikipedia || SelfHTML
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

Hallo,


da speichert er auch nixmehr


Ambience
homoerectus
Mitglied
Beiträge: 252
Registriert: 10.11.2005 12:30

Beitrag von homoerectus »

Ambience hat geschrieben:da speichert er auch nixmehr
Was genau macht er denn? Irgendwelche Fehlermeldungen, gibt er irgendwas anderes aus, wie sieht die Textdatei danach aus,...?

mfg
phpBB.de: link:Suche || link:doku || link:FAQ || link:KB || KB-Übersicht
außerdem:
Google || Wikipedia || SelfHTML
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Mal abgesehen, daß nicht Stream-basierte Chats sowieso recht viel Performance kosten und daher sogar bei einigen Providern verboten sind, solltest du zwecks einfacherer Synchronisierung lieber eine Datenbank verwenden. Du kannst dir ja z.B. mal mein SimpleChat angucken.
KB:knigge
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

schau gleich mal..

hab schon nur mal beim quellschaun nen fehler in der config.php gefunden:

Code: Alles auswählen

$ban_require=idmod;
idmod muss da glaubeich ismod heißen.


edit: Boar muss den erstmal zum laufen bringen.. der ist ja buggy.. xD Kommt immer kein Namen angegeben odersowas... lol..


edit: wenn ich auf datenbankumstelle... was ist performanter? Sqlite oder Mysql ? würde persönlich Sqlite vorziehen weil ich gerne php5 nutzen würde.
homoerectus
Mitglied
Beiträge: 252
Registriert: 10.11.2005 12:30

Beitrag von homoerectus »

Hallo,
wenn du die Daten auch in eine Datenbank schreiben kannst, ist das natürlich besser.
Ambience hat geschrieben:wenn ich auf datenbankumstelle... was ist performanter? Sqlite oder Mysql ? würde persönlich Sqlite vorziehen weil ich gerne php5 nutzen würde.
Was spricht gegen MySQL + PHP5? SQLite ist dateibasiert - schreibt also wieder in eine Datei - weshalb bei Schreibvorgängen die ganze Datenbank gesperrt wird. Wenn du also viele Schreibzugriffe hast (und ich denke bei Chats ist das so), ist mit ziemlicher Sicherheit MySQL schneller.

Schöne Grüße
phpBB.de: link:Suche || link:doku || link:FAQ || link:KB || KB-Übersicht
außerdem:
Google || Wikipedia || SelfHTML
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

Hallo,

also ich hab jetzt mal verschiedene Chatsysteme getestet :-( kann ich nur sagen... Alle mit seitenreload, kein gescheides ajax drinne..

Nunja, mit Datenbank, da hab ich das problem, das in der zeit während mein ajax content reloaded kurz ein flackern auftritt... dieses finde ich wirklich schlimm... Ich werde es wohl bei Textdatei belassen....

Hmm java sollte man können xD...


Ambience
Antworten

Zurück zu „Coding & Technik“