Heim  >  Artikel  >  Backend-Entwicklung  >  Erweiterte Nutzungsfreigabe von file_get_contents

Erweiterte Nutzungsfreigabe von file_get_contents

小云云
小云云Original
2018-03-06 10:02:421843Durchsuche

Bezüglich der erweiterten Verwendung von file_get_contents lösen Sie zunächst das Timeout-Problem von file_get_contents. Nachdem das Timeout einen Fehler zurückgegeben hat, versuchen Sie es mit settimeout in js. Nach mehr als 3 oder 5 Fehlern wird bestätigt, dass der Server lässt sich nicht ganz aufgeben.

Hier sind zwei einfache Lösungen:

1. Erhöhen Sie das Zeitlimit für Timeout

Hinweis: set_time_limit ist nur Set das Timeout für Ihr PHP-Programm, nicht das Timeout für die Funktion file_get_contents zum Lesen der URL.

Ich dachte zunächst, dass set_time_limit auch file_get_contents beeinflussen könnte, aber nach dem Testen war es ungültig. Um die Verzögerung von file_get_contents wirklich zu ändern, können Sie den Timeout-Parameter der Ressource $context verwenden:

Der PHP-Programmcode lautet wie folgt:


$opts = array(
    'http'=>array(
      'method'=>"GET",
      'timeout'=>60,
    )
);

$context = stream_context_create($opts);

$html =file_get_contents('http://www.php.cn', false, $context);
fpassthru($fp);

2. Weitere Versuche

Der PHP-Programmcode lautet wie folgt:


$cnt=0;
while($cnt < 3 && ($str=@file_get_contents(&#39;http...&#39;))===FALSE){
   $cnt++;
}

Die obige Methode ist in Ordnung Auszeiten. Als nächstes demonstrieren wir die Verwendung von file_get_contents zum Implementieren von Post wie folgt:
PHP-Programmcode


function Post($url, $post = null){
    $context = array();
    if (is_array($post)) {
      ksort($post);

      $context[&#39;http&#39;] = array (
        &#39;timeout&#39;=>60,
        &#39;method&#39; => &#39;POST&#39;,
        &#39;content&#39; => http_build_query($post, &#39;&#39;, &#39;&&#39;),
       );
    }

    return file_get_contents($url, false, stream_context_create($context));
}

$data = array (
    &#39;name&#39; => &#39;test&#39;,
    &#39;email&#39; => &#39;test@gmail.com&#39;,
    &#39;submit&#39; => &#39;submit&#39;,
);

echo Post(&#39;http://www.php.cn&#39;, $data);

Achten Sie auf Set_time_out im Dokumentheader, andernfalls Das gesamte Dokument läuft ab.

Verwandte Empfehlungen:
Detaillierte Erklärung des Unterschieds zwischen PHP fopen() und file_get_contents()

CURL ist besser als file_get_contents() in PHP Ausführliche Erläuterung von Beispielen

10 empfohlene Artikel zu file_get_contents

Das obige ist der detaillierte Inhalt vonErweiterte Nutzungsfreigabe von file_get_contents. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn