![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
Ich bin gerade am schreiben von Funktionen zur Speicherung von Log-Einträgen. Dabei ist mir ein Problem in den Sinn gekommen. Und zwar es ist möglich mit der Funktion flock() den gleichzeitigen Zugriff auf Dateien zu verhindern. Dabei sehe ich allerdings ein Problem. Wenn jetzt wirklich die Log-Datei noch gesperrt ist und das Script versuchen würde etwas da rein zu schreiben, würde ja dieser Log Eintrag verloren gehen. Ich könnte natürlich den Script so schreiben, dass wenn dieser eine Eintrag nicht gespeichert werden kann, dass Script unterbricht und eine Fehlermeldung ausgibt. Allerdings ist es bei Log-Einträgen nicht Sinnvoll. Wenn wirklich viele User auf der Seite dann aktiv sind, wird diese Fehlermeldung dann andauernd auftauchen. Also habt ihr hierzu vielleicht Ideen, wie man das am besten lösen kann? Geändert von dago (21.06.2006 um 15:07 Uhr) |
| | |
| | Nach oben #2 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.365
|
ich weiß ja nicht, was du da so logst, und wie wichtig das wirklich ist... ich schlage dir vor, dass du dafür eine Datenbank wie zB mysql nimmst!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #3 | |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
| Zitat:
Eine andere Möglich ist das ganze per Mail zu versenden, aber das ist mir etwas zu viel. Nach dem Manual funktioniert die Funktion flock() auch nicht auf allen Dateisystemen. Also muss oder will ich jetzt versuchen dazu eigene Funktion zu schreiben. Geändert von dago (21.06.2006 um 16:15 Uhr) | |
| | |
| | Nach oben #4 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.365
|
eine Möglichkeit wäre eine Datei zu erstellen, wenn die Datei xyz.LOCK existiert, dann ist die log-Datei gerade gesperrt. Wenn sie wieder freigegeben wird, dann die Datei löschen .... das stand aber die Tage hier schonmal woanders im Forum!
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #5 |
| Johannes Schlichenmaier Registriert seit: 26.08.2005 Ort: Mannheim
Beiträge: 403
|
Du könntest einen Cache machen mit dem namen time().tmp oder so. Wenn das Log grade gesperrt ist, könntest du in den Cache schreiben. Wenn ein weiterer Zugriff auf das Log gemacht wird und er ist erfolgreich, dann kannst du nach .tmp-Dateien suchen, sie nach dem Timestamp ordnen und dann an das Cache anhängen und anschließend löschen. Danach trägst du dann deinen aktuellen Log ein. Natürlich dauert das seine Zeit, aber dann hast du halt einen Rückstau bei vielen Usern, der sich aber wieder auflöst, wenn sich der Ansturm legt. Jojo
__________________ In the beginning was the word and the word was content-type: plain/text heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int |
| | |
| | Nach oben #6 |
| Gast
Beiträge: n/a
|
Unter Windows, Linux und FreeBSD funktioniert flock auf jeden Fall (bereits getestet). Deshalb solltest du es auch verwenden. Die Sachen mit Dateien mit Zeitstempeln etc. zu schreiben ist einfach ineffizient und langsam. Datenbanken kannst du für sowas sowieso vergessen IMHO. Was ist wenn ein Script schreiben will und ein anderes bereits schreibt. Willst du das Script warten lassen und nach 5ms noch mal versuchen zu lassen? Was machst du wenn viele User auf dein Script zugreifen und ein Script nur schleppend zum Zug kommt? Flock würde das automatisch regeln d.h. du müsstes auch noch abspeichern in welcher Reihenfolge die Scripte zugreifen sollen. Fakt ist, dass flock auf allen gängen Betriebsystemen funktioniert und die 1% an anderen Server Betriebsystemen auf denen PHP läuft/eingesetzt wird können glaube ich ignorierd werden, sofern dein Script nicht so oft wie Typo3 oder sonst was verwendet wird und auch dann ... IMHO ist die ganze Diskussion darüber relativ sinnlos. EDIT 1: Ich habe mir jetzt die ganzen Threads noch mal durchgelesen. Ihr solltet alle bedenken, dass wir hier im ms Bereich sind und wenn du Dateien oder Datenbanken verwendest haufenweise Queries entstehen und das gleiche Problem noch einmal auftritt. Nämlich welches Script darf wann die Datenbankspalte updaten bzw. die temporäre Datei erneuern bzw. beschreiben! Jay Geändert von Jay (21.06.2006 um 19:25 Uhr) |
|
| | Nach oben #7 | |
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
Vielen dank für eure bis her genannten Lösungen/Anregungen! Hab leider erst jetzt wieder Zeit mich dem Script zu wiedmen. @Jay: Allein nur mit flock, kann ich nicht arbeiten, da mir sonst einige Einträge fehlen würden. Zitat:
@Jojo: Die Idee hat mir bei der mit flock Variante gefehlt! So würde es funktionieren. Eine andere Idee währe, wenn man das Schreiben in die Datei erst beim beenden des Scripts machen würde. Dann könnte man dem User die Seite ausgeben (damit er nicht warten muss) und erst dann schaun ob die Datei gesperrt ist, warten ... und dann Schreiben. Im Fehlerfall, dann doch eine E-Mail an den Webmaster verschicken. Interessant währe natürlich noch für mich, wie man das auch ohne flock realisieren könnte. (Auch wenn das nicht sein muss.) Da mit nur anlegen einer Temporären Sperr-Datei ist es ja noch nicht getan. Denn es könnten wieder mehrere Scripte gelichzeitig die Datei anlegen... Ok sehr unwahrscheinlich, aber möglich Schonmal DANKE an alle! Grüße dago | |
| | |
| | Nach oben #8 | ||||
| Gast
Beiträge: n/a
| Zitat:
Zitat:
Zitat:
Zitat:
| ||||
|
| | Nach oben #9 | ||
| Daniel Golowin Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
|
*ggg* @Jay: Könnte es sein, dass wir an einander vorbei reden? Ich vermute du hast mein Problem nicht verstanden: Zitat:
Deswegen arbeite ich jetzt mit flock und Cache der Einträge! Zitat:
Ich meine das soll mit der Funktion register_shutdown_function() möglich sein. Ihre ich mich da? | ||
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| EasyEclipse zeigt keine Tasks/Problems aus Dateien mehr an | robo47 | Eclipse | 6 | 02.09.2007 04:44 |
| mod_rewrite - RewriteRegel um Dateien in Verzeichnis zu simulieren | Ben | Tools, Server, Betriebssysteme | 4 | 20.06.2007 17:16 |
| Dateien aus SVN 1 auschecken, in SVN 2 einchecken, keine eigenen Änderungen vorhanden | Ben | Tools, Server, Betriebssysteme | 2 | 21.03.2007 18:53 |
| Cache leeren um mit file Dateien zu durchsuchen | Tryzero | PHP-Programmierung | 12 | 12.03.2007 10:13 |
| [PHP] FTP-Funktionen in PHP nutzen | MrNiceGuy | Tutorials | 0 | 24.05.2006 14:18 |