file_exists() und file_get_contents() atomar verwenden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • file_exists() und file_get_contents() atomar verwenden

    Der Titel sagt je eigentlich schon alles. Ich hab Dateien die dynamisch erstellt und gelöscht werden. Und aller paar 100.000 Aufrufe fällt ein unlink() genau zwischen file_exists() und file_get_contents(). Ich könnte es zwar mit @ unterdrücken, da sowohl eine nicht existieren als auch ein nicht mehr existierende Datei 'nen leeren String zurück gibt, aber das sagt mir eigentlich nicht zu.

    Jemand 'ne Idee zur Lösung dieses Problems?
    Team BashComp

  • #2
    flock()?

    Kommentar


    • #3
      Kapier ich net.
      Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

      Kommentar


      • #4
        http://de.wikipedia.org/wiki/Prozesssynchronisation
        http://de.wikipedia.org/wiki/Mutex
        http://de.wikipedia.org/wiki/Lock

        Kommentar


        • #5
          Original geschrieben von penizillin
          flock()?
          war auch meine erste idee, aber verlagert das problem nur zu:

          file_exists
          fopen + flock

          also besteht das problem nach wie vor.

          Kommentar


          • #6
            Und was macht flock mit meinen unlink()? Der Hilfe ist nicht wirklich zu entnehmen wie das arbeitet. Wenn es nur alle anderen Zugriffe blockt, hilft es ja nicht weiter.


            All zu weit kann ich ja nicht ausholen was jetzt Sperren angeht, da ich ja kein Verbindung zw. den beiden php-Instanzen habe.

            Übrigens: Wikipedia darf man bei den Sperren nicht vertrauen. Es gab mal ein Prüfungsaufgaben bei uns in der es hieß: "Dieser Code stammt aus Wikipedia. Warum funktioniert diese Sperre nicht!"
            Team BashComp

            Kommentar


            • #7
              Schonmal jemand damit gearbeitet:
              http://www.php.net/manual/de/ref.sem.php
              Team BashComp

              Kommentar


              • #8
                das wäre mein zweiter vorschlag.

                allerdings würde ich schauen und testen, in wie fern flock() mit unset arbeiten kann.

                Kommentar

                Lädt...
                X