2017-03-18 5 views
0

Ich habe ein einfaches Skript, um Daten von einem anderen Server zu erhalten, laufen alle 1 Minuten.Überprüfen Sie Daten vor fwrite

<?php 
$html = file_get_contents('http://google.com/data.php'); 


$myfile = fopen("data.html", "w") or die("Unable to open file!"); 

fwrite($myfile, $html); 
fclose($myfile); 

?> 

Aber irgendwann, schreiben Skript leere Daten data.html. Ich denke da Verbindungsproblem zwischen meinem Server und Remote-Server oder Ziel-Datei einfach irgendwann leer.

Ich frage mich, ob ich Daten überprüfen nach erhalten, wenn die empfangenen Daten nicht leer, dann schreibe, wenn Daten leer und dann zu beenden. Bitte helfen Sie mir, wie es geht. Danken!

+0

Ein 'if' mit' empty' scheint zu funktionieren, http://php.net/manual/en/control-structures.if.php http://php.net/manual/en/function.empty .php. – chris85

+0

@ chris85 will nicht pedantisch sein, aber '" 0 "' gilt auch als leer - vielleicht könnte es eine gültige Ausgabe des 'data.php'-Skripts sein ... – ewcz

+0

@ewcz Oh, guter Punkt, Code und Beschreibung abweichen. Ich dachte, es wäre HTML (data.html). – chris85

Antwort

0

file_get_contents kehrt false auf Fehler, so kann Sie es direkt überprüfen === oder !== als

mit
<?php 
$html = file_get_contents('http://google.com/data.php'); 

if($html !== false){ 
    $myfile = fopen("data.html", "w") or die("Unable to open file!"); 

    fwrite($myfile, $html); 
    fclose($myfile); 
} 

?> 

, wenn Sie nur testen wollen, ob die Ausgabe leer ist, können Sie beispielsweise verwenden, um den Vergleich $html !== false && $html !== ''

Verwandte Themen