Maison >développement back-end >tutoriel php >Comment puis-je définir gracieusement les délais d'expiration de Curl dans PHP pour éviter la résiliation prématurée des requêtes de base de données eXist ?

Comment puis-je définir gracieusement les délais d'expiration de Curl dans PHP pour éviter la résiliation prématurée des requêtes de base de données eXist ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 15:54:10445parcourir

How Can I Gracefully Set Curl Timeouts in PHP to Avoid Premature Termination of eXist Database Requests?

Définition gracieuse du délai d'attente de Curl en PHP

Dans le but de surmonter les temps de réponse XML prolongés d'une base de données eXist, une requête PHP curl a été implémentée avec une valeur de délai d'attente apparemment longue. Cependant, la requête s'est terminée prématurément avant son achèvement.

Comme indiqué dans la documentation PHP, curl propose deux paramètres de délai d'expiration distincts :

  • CURLOPT_CONNECTTIMEOUT : Spécifie le délai d'expiration. pour établir une connexion (avec un délai par défaut de 30 secondes). Le définir sur 0 indique une attente indéfinie.
  • CURLOPT_TIMEOUT : Définit la durée maximale de toutes les opérations curl (avec une valeur par défaut de 0, ce qui signifie aucun délai d'attente). Ce délai d'attente inclut le temps nécessaire à l'établissement de la connexion et à la récupération de la réponse.

Pour le scénario donné, les modifications de code suivantes sont recommandées :

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); // Wait indefinitely for connection establishment
curl_setopt($ch, CURLOPT_TIMEOUT, 400); // Set the timeout to 400 seconds

De plus, il est essentiel d'étendre le temps d'exécution du script PHP pour éviter une résiliation prématurée. Ceci peut être réalisé en utilisant set_time_limit(0) pour permettre un temps d'exécution infini.

set_time_limit(0); // Allow for infinite execution time

En implémentant ces ajustements, le comportement de délai d'attente de curl sera correctement configuré, garantissant que la requête dispose de suffisamment de temps pour se terminer tout en évitant les erreurs prématurées. résiliation.

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