kostenloser Webspace werbefrei: lima-city


PHP: flock()

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    Ich hab gehört das wenn ich eine Datei mit fopen() öffne, ich mit flock() die geöffnete Datei vor fremdem Zugriff schützen soll. Das klingt vernünftig, aber wie genau mach ich das? Mit der Anleitung hier komm ich nicht zu Recht: http://php.net/manual/de/function.flock.php

    Mein Script:

    <?php
    $daten = $_POST['inhalt'];
    $datei = fopen('/robots.txt',"a");
    fwrite($datei, $daten);
    fclose($datei);
    ?>

    Wo genau muss jetzt das flock() rein und wie würde das aussehn?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. b***************s

    Eine einfache Möglichkeit "flock" zu benutzen:
    <?php
    $daten = $_POST['inhalt'];
    $datei = fopen('/robots.txt',"a");
    if (flock($datei, LOCK_EX)) { //Verriegelung setzten bzw mit "if" zum Prüfen ob Verriegelung gesetzt wurde ist (oder Datei schon verriegelt ist)
    	fwrite($datei, $daten);
    	flock($datei, LOCK_UN) ; //Verriegelung frei geben
    }
    fclose($datei);
    ?>

    Kann dir nur nicht sagen was raus kommt, wenn flock nicht unterstützt wird, wenn einer der Gründe auf deiner angegebenen Seite eintrifft bzw. allgemein gesperrt worden ist.
  4. Genau so hätte ich es auch gemacht,

    allerdings sollte man einen else-Zweig haben.

    <?php
    $daten = $_POST['inhalt'];
    $datei = fopen('/robots.txt',"a");
    if (flock($datei, LOCK_EX)) { //Verriegelung setzten bzw mit "if" zum Prüfen ob Verriegelung gesetzt wurde ist (oder Datei schon verriegelt ist)
    fwrite($datei, $daten);
    flock($datei, LOCK_UN) ; //Verriegelung frei geben
    }
    else{
    echo 'File is locked by another process, aborting writing';
    }

    fclose($datei);
    ?>

    Sonst bekommt man keinerlei Rückmeldung wenn die Datei bereits geöffnet ist und das Schreiben garnicht erst abläuft.
  5. Autor dieses Themas

    melonenfans

    melonenfans hat kostenlosen Webspace.

    Bevor ich jetzt einen neuen Thread starte poste ich mal in meinen eigenen Thread hier.

    Brauche ich eigentlich bei file() oder file_put_contents() auch flock(). Ich habe meinen Blog als Textdatei gespeichert und lese diesen auf der Seite via file() aus. Sozusagen nutze ich die Textdatei als Datenbankersatz. Ist flock() hier sinnvoll / notwendig? Ich mein was passiert wenn mehrere gleichzeitig die Seite aufrufen?
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!