Maison  >  Article  >  développement back-end  >  Définir le délai d'attente en php

Définir le délai d'attente en php

WBOY
WBOYoriginal
2023-05-06 11:26:073121parcourir

Avec la mise à niveau des scénarios d'applications Internet, les exigences de performances et de fiabilité des applications Web sont de plus en plus élevées. Lorsque vous lancez une requête HTTP, vous rencontrerez inévitablement des problèmes tels que des goulots d'étranglement du réseau, une charge de serveur importante, une réponse lente des interfaces tierces, etc., entraînant des délais de requête longs. Une fois que le temps de requête est trop long, cela entraînera le gel de la page frontale, dégradera l'expérience utilisateur et, plus sérieusement, cela pourra conduire à l'épuisement des ressources du serveur. Pour cette raison, la définition d’un délai d’attente est très importante.

Cet article explique comment définir le délai d'attente en PHP.

Le rôle du délai d'attente

Le délai d'attente fait référence au temps maximum d'attente pour que le serveur traite et réponde après l'envoi d'une requête HTTP. Une fois ce délai dépassé, la requête sera abandonnée de force et un message d'erreur sera renvoyé.

Le paramètre de délai d'attente a deux significations : D'une part, du point de vue du serveur Web, il protège les ressources du serveur en limitant le temps de traitement pour éviter l'effet pont provoqué par un trop grand nombre de requêtes, qui réduit la disponibilité de l'ensemble du service. . D'un autre côté, du point de vue de l'utilisateur, le délai d'attente vise également à éviter la dégradation de l'expérience utilisateur due aux longs temps d'attente des requêtes. Lorsque la requête dépasse un certain temps, les utilisateurs commenceront à se demander si quelque chose d'anormal s'est produit et pourront même interrompre l'opération.

Timeout timing

Le timeout peut être défini en PHP, et il peut être défini à différents endroits. De manière générale, le délai d'expiration comprend principalement les types suivants :

Délai d'expiration de la connexion

Le délai d'expiration de la connexion fait référence au temps d'attente lors de l'établissement d'une connexion HTTP. En PHP, vous pouvez utiliser la bibliothèque fsockopen() ou curl pour établir une connexion HTTP. Lorsque vous utilisez fsockopen() pour vous connecter au serveur HTTP, vous pouvez définir le délai d'expiration de la connexion au socket : fsockopen()curl库建立HTTP连接。使用fsockopen()连接HTTP服务器时,可以设置socket连接超时时间:

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 5);
if (!$fp) {
   echo "连接服务器失败: $errstr ($errno)";
} else {
   //请求处理
   fclose($fp);
}

使用curl库连接HTTP服务器时,可以设置超时时间,如果在指定的竞争时间内连接不到目标服务器就会触发连接超时错误:

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); //设置连接超时时间
curl_setopt($curl, CURLOPT_TIMEOUT, 5); //设置超时时间
curl_setopt($curl, CURLOPT_URL, 'http://www.example.com');
curl_exec($curl);
curl_close($curl);

数据传输超时

数据传输超时是指在连接成功后,等待服务器响应的时间。同样,可以使用curl库设置超时时间,在指定的时间内等待服务器响应,如果超时则抛出错误:

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); //设置连接超时时间
curl_setopt($curl, CURLOPT_TIMEOUT, 5); //设置数据传输超时时间
curl_setopt($curl, CURLOPT_URL, 'http://www.example.com');
curl_exec($curl);
curl_close($curl);

脚本执行超时

当PHP解释器执行一段程序时,如果执行时间超时了,就会抛出脚本执行超时错误。默认情况下,PHP将等待30秒钟才会会中断脚本执行,可以通过set_time_limit()

set_time_limit(10); //设置脚本最大执行时间为10秒钟
Lorsque vous utilisez la bibliothèque curl pour vous connecter au serveur HTTP, vous peut définir le délai d'attente. Si l'échec de connexion au serveur cible spécifié pendant la durée de la compétition déclenche une erreur de délai de connexion :

rrreee

Délai d'expiration de la transmission des données

Le délai d'attente de la transmission des données fait référence au temps d'attente pour que le serveur réponde après un délai d'attente. connexion réussie. De même, vous pouvez utiliser la bibliothèque curl pour définir un délai d'attente, attendre la réponse du serveur dans le délai spécifié et générer une erreur si le délai expire :

rrreee

Délai d'expiration du script🎜🎜Lorsque le PHP L'interpréteur exécute un programme. Si le délai d'exécution expire, une erreur de délai d'exécution du script sera générée. Par défaut, PHP attendra 30 secondes avant d'interrompre l'exécution du script. Vous pouvez modifier le délai d'attente via la méthode set_time_limit() : 🎜rrreee🎜Lorsque vous devez traiter une grande quantité de données ou effectuer un temps très long. tâche consommatrice Vous devrez peut-être utiliser cette méthode pour les paramètres de délai d'attente. 🎜🎜Résumé🎜🎜Il est très important de définir le délai d'attente en PHP pour éviter des problèmes tels que l'épuisement des ressources et la dégradation de l'expérience utilisateur causés par de longs temps d'attente pour les requêtes. PHP fournit une multitude de fonctions et de bibliothèques pour implémenter des paramètres de délai d'attente, qui peuvent limiter le délai d'attente lors de l'établissement de la connexion, de la transmission des données et de l'exécution du script. Lors de la définition du délai d'expiration, vous devez choisir le timing et la valeur appropriés en fonction de la situation spécifique pour garantir la disponibilité du serveur et l'expérience utilisateur. 🎜

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