2017-03-26 4 views
0

Ich wollte eine exe, die TXT-Dateien und auch in einem anderen Skript erzeugt, dann überprüfen, dass die TXT-Dateien erstellt wurden.PHP - Warte auf Datei zu existieren

In XAMPP ziehe ich einfach eine test.txt-Datei in das folgende PHP-Skriptverzeichnis, aber es scheint nicht richtig zu funktionieren, auch wenn ich text.txt in das Verzeichnis einfüge und das Skript starte statt zu starten Bevor es hinzugefügt wird, scheint das zweite Echo nie zu passieren.

Wie kann ich PHP warten auf die Textdatei warten und dann fortfahren?

set_time_limit(0); 

echo "Script began: " . date("d-m-Y h:i:s") . "<br>"; 

$status = file_exists("test.txt"); 
while($status != true) { 
    if ($status == true) { 
     echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 
     break; 
    } 
} 

Dies gilt auch nicht:

set_time_limit(0); 

echo "Script began: " . date("d-m-Y h:i:s") . "<br>"; 

while(!file_exists("test.txt")) { 
    if (file_exists("test.txt")) { 
     echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 
     break; 
    } 
} 
+2

'$ status' __never__ ändert seinen Wert. –

+1

* "Solange der Status nicht wahr ist, wenn der Status wahr ist ..." * - mit dieser versuchten Logik ist viel falsch. – deceze

+0

Ich hatte versucht, es zu ändern, um direkt zu sein, sehe meine Bearbeitung, aber es funktioniert immer noch nicht, das zweite Echo passiert auch nie. – zeddex

Antwort

1

sollte dies funktioniert gut

set_time_limit(0); 

echo "Script began: " . date("d-m-Y h:i:s") . "<br>"; 

do { 
    if (file_exists("test.txt")) { 
     echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 
     break; 
    } 
} while(true); 
+0

Das funktioniert gut, danke. – zeddex

+0

wenn Sie in einem hinzufügen sleep (1); das wäre direkt nach der if-Anweisung richtig? – zeddex

+0

ja, du musst das innerhalb der if-Anweisung hinzufügen – hassan

2

Ich nehme an, Sie diesen Ansatz verwenden sollte:

set_time_limit(0); 

echo "Script began: " . date("d-m-Y h:i:s") . "<br>"; 

while (true) { 
    // we will always check for file existence at least one time 
    // so if `test.txt` already exists - you will see the message 
    // if not - script will wait until file appears in a folder 
    if (file_exists("test.txt")) { 
     echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 
     break; 
    } 
} 
2

ich, dass Sie vertrauen haben andere Sicherheitsvorkehrungen, um sicherzustellen, dass dass du nicht in einer Endlosschleife bist.

while(!file_exists('test.txt')); 
echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 

wäre einfacher.

Wie auch immer, Ihr Problem ist mit Ihrem Vortest. Da es nicht anfängt, wiederholt es sich nicht. Was Sie brauchen, ist ein Post-Test:

do { 
    if (file_exists("test.txt")) { 
     echo "The file was found: " . date("d-m-Y h:i:s") . "<br>"; 
     break; 
    } 
} while(!file_exists("test.txt")); 
+0

Danke, ich benutze normalerweise keine While-Schleifen, damit ich eine Notiz davon mache. – zeddex