CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
27.02.2006, 14:27:40
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von Heppi
Sollte ich anfangen Lotto zu spielen?
|
Wieso anfangen? Du tust es ja schon.
|
27.02.2006, 14:28:04
|
Junior Member
|
|
Registriert seit: Apr 2005
Beiträge: 309
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von meikel
Unter Volllast klappt das schon mal. Wenn sich so 100-150 User auf einen Schlag ins Gästebuch eintragen wollen, da is die Hölle los...
|
Und muss ich dann auch bei der Anhängen-Variante mit Problemen rechnen?
Zitat:
Zitat von meikel
Weil die Datei Schrott ist, wenn zeitgleich zwei User etwas eintragen wollen.
|
Die Frage warum nicht bezog sich eigentlich auf Heppi, weil er es nicht mit Anhängen der Daten probiert....
Aber die Frage wäre ja, ob das das Problem lösen kann?!!!
Wenn ja...
Zitat:
Zitat von Heppi
Hab jetzt halt das Problem, daß ich schon ewig viele log-Files habe, welche ich dann von Hand umdrehen müsste.
|
Dafür könntest Du Dir doch relativ einfach ein Skript schreiben... oder Du machst eben in Zukunft für das Lesen der LOGs ein Unterschied, ob die Datei z.B. vor dem 01.März 2006 erzeugt wurde oder danach?!
|
27.02.2006, 14:32:57
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von Heppi
Ja, schon klar. Aber wie wird's gemacht, daß einer hinter dem anderen bleibt?
|
Darauf paßt der Server auf. Eine SQL Abfrage wird nicht sofort ins File sondern erst mal in die Warteschlange gestellt. Ein anderer Prozeß arbeitet die Warteschlange dann der Reihe nach ab.
MySQL verwaltet die Tabellen in sogenannten Pages, die der Reihe nach vollgeschrieben werden. Gelöscht wird nicht sondern nur ein Flag gesetzt. Deshalb sollte man Tabellen, in denen häufig gelöscht oder geändert wird, mit OPTIMIZE behandeln, damit die Karteileichen physikalisch gelöscht werden.
|
27.02.2006, 14:42:24
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von Giz
Und muss ich dann auch bei der Anhängen-Variante mit Problemen rechnen?
|
Ich habe da aufgrund negativer Erfahrungen ein ungutes Gefühl.
Der MySQL Server regelt zeitgleiche Zugriffe mit einer Queue, der Apache startet stattdessen eine weitere Instanz. Damit weiß User1 nicht, was User2 treibt.
Es wäre ja kein Problem, wenn die Scripte sequentiell abgearbeitet würden. Dann ist User1 fertig bevor User2 dran ist. Aber leider ist es nicht so.
|
27.02.2006, 14:52:53
|
Junior Member
|
|
Registriert seit: Apr 2005
Beiträge: 309
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von meikel
Ich habe da aufgrund negativer Erfahrungen ein ungutes Gefühl.
Der MySQL Server regelt zeitgleiche Zugriffe mit einer Queue, der Apache startet stattdessen eine weitere Instanz. Damit weiß User1 nicht, was User2 treibt.
Es wäre ja kein Problem, wenn die Scripte sequentiell abgearbeitet würden. Dann ist User1 fertig bevor User2 dran ist. Aber leider ist es nicht so.
|
Bedeutet das, Du verzichtest lieber vollständig auf solche Dateien und arbeitest in allem mit SQL? Ich bin ja gerade am überarbeiten meiner Datenstruktur und scheue mich einfach noch komplett umzusteigen, weil ich es ganz praktisch finde , wenn ich die Daten, die ich gespeichert habe, auch irgendwie als greifbare einzeilne Datei ansehen und ggf. ändern kann.
Aber eigentlich ist das ja auch nicht Sinn solcher Daten...
|
27.02.2006, 14:57:38
|
Anfänger
|
|
Registriert seit: Aug 2003
Ort: Leutkirch im Allgäu
Beiträge: 79
|
|
AW: fopen() ohne Überschreiben
Da geht's mir jetzt gleich wie Giz.
Für was gibt's denn die Funktion flock(), wenn die eh nur Bullshit bzw. gar nichts macht?
|
27.02.2006, 15:13:05
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von Giz
Bedeutet das, Du verzichtest lieber vollständig auf solche Dateien und arbeitest in allem mit SQL?
|
Ich verwende SQL da, wo es sinnvoll ist. Und sinnvoll ist ein DBMS bei solchen Anwendungen, bei denen mehr als einer schreiben darf u/o bei denen sortiert, gerechnet, selektiert, geändert, eingefügt usw. werden muß.
|
27.02.2006, 15:17:02
|
Junior Member
|
|
Registriert seit: Apr 2005
Beiträge: 309
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von meikel
Ich verwende SQL da, wo es sinnvoll ist. Und sinnvoll ist ein DBMS bei solchen Anwendungen, bei denen mehr als einer schreiben darf u/o bei denen sortiert, gerechnet, selektiert, geändert, eingefügt usw. werden muß.
|
Das werde ich mal in meine Überlegungen mit einbeziehen... ;)
|
27.02.2006, 15:19:20
|
Junior Member
|
|
Registriert seit: Apr 2005
Beiträge: 309
|
|
AW: fopen() ohne Überschreiben
Zitat:
Zitat von Heppi
Da geht's mir jetzt gleich wie Giz.
Für was gibt's denn die Funktion flock(), wenn die eh nur Bullshit bzw. gar nichts macht?
|
Wie es aussieht bietet sich jedenfalls keine vernünftige Lösung an um das Problem zu umgehen, wenn Du nicht umsteigst...
Aber wie gesagt : Mir ist in zwei Jahren nicht einmal etwas abhanden gekommen...
|
27.02.2006, 20:35:19
|
Anfänger
|
|
Registriert seit: Aug 2003
Ort: Leutkirch im Allgäu
Beiträge: 79
|
|
AW: fopen() ohne Überschreiben
So, ich mal wieder. In der Hoffnung, daß ich niemanden nerve.
Hab jetzt mal das folgende versucht. Erstmal zwei Source-Files.
PHP-Code:
// test1.php
<?php
$log_datei = fopen('log.dat', 'a');
flock($log_datei, LOCK_EX);
fputs($log_datei, "test1: ".time()."\r\n");
sleep(20);
fputs($log_datei, "test1: ".time()."\r\n");
flock($log_datei, LOCK_UN);
fclose($log_datei);
?>
PHP-Code:
// test2.php
<?php
$beginn = "test2: ".time()."\r\n";
$log_datei = fopen('log.dat', 'a');
flock($log_datei, LOCK_EX);
fputs($log_datei, $beginn."test2: ".time()."\r\n");
flock($log_datei, LOCK_UN);
fclose($log_datei);
?>
Ich rufe test1.php auf, welche eine Datei öffnet, sperrt, einen Timestamp schreibt, 20 Sekunden wartet, wieder einen Timestamp schreibt und anschließend die Datei wieder freigibt. In dieser Zeit rufe ich test2.php auf.
Dort speichere ich die Startzeit des Skripts und versuche dann ebenfalls in log.dat zu schreiben. Dies mißlingt und das Skript wartet bis die Datei von test1.php wieder freigegeben wurde. Ergebnis:
PHP-Code:
test1: 1141064733
test1: 1141064753
test2: 1141064735
test2: 1141064753
Also, müßte das ganze doch so funktionieren, oder!?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:20:42 Uhr.
|