Maison >développement back-end >tutoriel php >Comment puis-je gérer les problèmes de délai d'attente lors de l'utilisation de file_get_contents() ?

Comment puis-je gérer les problèmes de délai d'attente lors de l'utilisation de file_get_contents() ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 14:19:02761parcourir

How can I manage timeout issues when using file_get_contents()?

Considérations sur le délai d'attente pour file_get_contents()

Lors de l'utilisation de file_get_contents() pour récupérer des données à partir d'un lien distant, il est crucial de prendre en compte ses implications en matière de délai d'attente . Par défaut, file_get_contents() hérite de sa durée d'expiration du paramètre PHP ini default_socket_timeout, qui est par défaut de 60 secondes. Si une opération de récupération dépasse cette limite, la requête expirera prématurément.

Remplacement du délai d'expiration par défaut

Pour modifier le paramètre de délai d'expiration par défaut, il existe deux approches principales :

  1. Modification des paramètres Ini : utilisez ini_set() pour ajustez la valeur default_socket_timeout. Par exemple :

    ini_set('default_socket_timeout', 900); // 900 Seconds = 15 Minutes
  2. Configuration du contexte de flux : définissez un contexte de flux personnalisé à l'aide de stream_context_create() et spécifiez le délai d'expiration souhaité en tant qu'options de contexte HTTP. Voici un exemple :

    $ctx = stream_context_create(array('http' => array('timeout' => 1200))); //1200 Seconds is 20 Minutes
    echo file_get_contents('http://example.com/', false, $ctx);

Remarque : N'oubliez pas que la durée du délai d'attente s'applique à l'ensemble du processus de récupération des fichiers, y compris la latence du réseau et le temps de traitement du serveur. Par conséquent, il est essentiel de définir une valeur de délai d'attente appropriée qui tient compte des retards potentiels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn