Sich selbst aktualisierende Datei

xanthos

Mitglied
Hallo

Auf meiner Page habe ich teilweise Daten, die nur selten aktualisiert, aber sehr häufig abgerufen werden (aus einer MySQL-DB). Daher habe ich mir eine einfach Möglichkeit überlegt, diese Daten in einer "Cache-Datei" abzulegen, die sich jeweils nach einer gewissen Mindest-Zeitspanne selbstständig aktualisiert:

PHP:
<?php

  $_duration = 10; // Mindest-Zeitspanne bis zur nächsten Aktualisierung

  if(time()-filemtime(__FILE__) > $_duration){

    if($_this_content = implode('',file(__FILE__))){
    
      $_new_content = date ("F d Y H:i:s.",time()); // Neuer Inhalt

      $_this_content = substr($_this_content,0,strrpos($_this_content,'?>')).'?>'.$_new_content;

      if($_this_open = fopen(__FILE__,'w+')){

        fwrite($_this_open,$_this_content);
        fclose($_this_open);

      }
      
    }
    
  }
  
?>

Ist an diesem Vorgehen irgendetwas auszusetzen (z.B. Sicherheitstechnisch)?

Gruss
 
Moin,

du willst eine Datei sich selbst neu schreiben lassen :eek:
Mir ist noch nie in den Sinn gekommen, soetwas zu Tun, ich kann mir garnicht vorstellen, dass das geht :-(
Das wäre ja wie ein Reifenwechsel bei voller Fahrt :suspekt:

Mal ungeachtet dessen, ob es nun geht oder nicht:
Irgendwas(Skript?) ändert ja die Daten in der DB, was spricht dagegen, dieses Skript die Datei ändern zu Lassen, sobald neue Daten vorhanden sind?
 
Mir ist noch nie in den Sinn gekommen, soetwas zu Tun, ich kann mir garnicht vorstellen, dass das geht :-(
Das wäre ja wie ein Reifenwechsel bei voller Fahrt

Es funktioniert tatsächlich. Der PHP-Code wird vollständig ausgeführt, selbst wenn er dabei die eigene Datei ändert. Ich nehme an, der Code wird vor der Ausführung in einen Zwischenspeicher geladen und ist dann unabhängig von der ursprünglichen Datei.

Irgendwas(Skript?) ändert ja die Daten in der DB, was spricht dagegen, dieses Skript die Datei ändern zu Lassen, sobald neue Daten vorhanden sind?

Die Daten selbst ändern sich so gut wie nie. Nur eben die Kriterien für die Ausgabe. Diese hängen allerdings von vielen verschiedenen Faktoren ab, sodass der Aufwand einfach zu gross wäre.
 
Falls die Situation passieren kann, dass dieser Prozess mehrfach angestoßen wird, kann es zu Problemen kommen.
Eventuell wäre die Benutzung von [phpf]flock[/phpf] hier anzuraten.
 
Zurück