2016-04-29 3 views
-1

habe ich eine Flat-File-Datenbank viele kleine PHP-Dateien enthalten.Öffnen jeder Datei in einem Ordner nacheinander

Jede Datei enthält so etwas wie:

<?php 
$amount = 350; 
$status = 1; 
$steamid = 76561198046273125; 
?> 

sie benannt sind, wie die $ SteamID sie enthalten. In diesem Fall 76561198046273125.php.

Ich mag würde einen cron-Job verwenden, um eine PHP-Datei auszuführen, die alle 10 Minuten um 10 die $ Menge Variable abnimmt. Ich schaffte es, dies zu tun, indem Sie eine Datei über Eröffnung:

$userinfo = fopen("users/76561198046273125.php") or die("Unable to open file!"); 

Dann

$amount = $amount - 10; 

und dann "fwrite" es wieder nach unten.

Da mit jedem neuen Benutzer eine neue Datei erstellt wird, habe ich nicht eine Liste aller Dateinamen.

Wie kann ich ein Skript durch den gesamten "Benutzer" -Ordner durchlaufen und jede Datei durchlaufen lassen, ohne eine Liste von Dateinamen zu geben?


EDIT: So etwas wie dies funktionieren könnte?

<?php 
foreach (glob('users/*.php') as $userfile) { 
    $userinfo = fopen("$userfile") or die("Unable to open file!"); 

    //...do some actions here... 

} 
?> 
+1

Lesen Sie die Liste der Dateinamen aus dem Ordner [glob()] (http://www.php.net/manual/en/function.glob.php) oder [scandir()] (http: // www .php.net/manual/en/function.scandir.php) –

+0

https://secure.php.net/glob –

+0

ich habe etwas zu meinem ursprünglichen Beitrag. Ist das richtig? –

Antwort

0

Von dem, was ich verstehe, möchten Sie auf einer dieser Variablen in einer externen Datei arbeiten und seinen Wert aktualisieren. Fopen öffnet Ihre Datei als einfache Textdatei und nicht als PHP-Datei. Dazu müssen Sie file_get_contents() mit eval() verwenden. Sie erhalten die internen Variablen, verringern den Betrag, bereiten den gesamten Text neu vor und überschreiben die Originaldatei.

versuchen, etwas in dieser Richtung:

foreach (glob("/your/path/to/users/folder/*.php") as $filename) { 
    $contents = file_get_contents($filename); 
    eval($contents); 
    $amount = $amount - 10; 

    $new_string = " 
     <?php\n 
      \$amount = $amount;\n 
      \$status = $status;\n 
      \$steamid = $steamid;\n 
     ?>" 
    ; 
    file_put_contents($filename, $new_string); 
} 

Ps. hüte dich vor den Gefahren von eval();

+0

Die Operation für die Datei selbst funktioniert bereits. Die Datei sollte als Textdatei geöffnet, geändert, gespeichert und bei Bedarf in eine andere PHP-Datei eingebunden werden. Mein Problem ist (oder war - wir werden sehen), durch einen ganzen Ordner von Gegenständen zu radeln, ohne ihre Namen zu kennen. –

+0

Ich habe den Pfad in der glob-Funktion geändert wird, müssen Sie bearbeiten, dass –

+0

Hey, das war viel einfacher als erwartet. Ich bin neu bei PHP und kannte den Glob-Befehl nicht. Danke vielmals! –