Maison > développement back-end > Problème PHP > Comment configurer curl pour qu'il n'expire pas en php ? Une brève analyse de plusieurs méthodes

Comment configurer curl pour qu'il n'expire pas en php ? Une brève analyse de plusieurs méthodes

PHPz
Libérer: 2023-03-27 19:26:10
original
2401 Les gens l'ont consulté

En PHP, curl est une bibliothèque puissante pour envoyer des requêtes HTTP. Cependant, par défaut, une requête curl définira un délai d'attente après lequel la requête sera annulée. Cette durée par défaut est de 1 seconde. Cependant, dans certains cas, nous pouvons souhaiter que la requête curl se poursuive sur une période plus longue plutôt que de s'annuler dans le délai d'expiration par défaut. Comment définir le délai d'expiration de la requête curl via le code PHP ? Voici plusieurs manières :

  1. Modifier le fichier php.ini

Si vous avez l'autorisation d'accéder au fichier php.ini, vous pouvez modifier le délai d'attente curl dans ce fichier. Dans le fichier php.ini, recherchez les deux options suivantes :

; Maximum amount of time (in seconds) that is allowed for cURL functions to execute.
; Note: This value should not be set to an excessive amount, as it will negatively
; affect server performance. 
; Default Value: 30
curl_timeout = 30

; The number of seconds to wait while trying to connect.
; Default Value: 60
curl_connect_timeout = 60
Copier après la connexion

Où, curl_timeout est le temps d'exécution maximum de la requête curl, et curl_connect_timeout est le délai d'expiration de connexion de curl. demande. Vous devez modifier leurs valeurs selon l'heure souhaitée en secondes. Une fois la modification terminée, redémarrez le service Apache ou PHP-FPM pour qu'elle prenne effet. curl_timeout 是 curl 请求的最大执行时间,curl_connect_timeout 是 curl 请求的连接超时时间。你需要将它们的值改为你想要的时间(以秒为单位)。修改完毕后,重启 Apache 或者 PHP-FPM 服务使之生效。

  1. 使用 curl_setopt 函数

如果你没有权限修改 php.ini 文件,可以在 PHP 代码中使用 curl_setopt 函数设置 curl 的超时时间。这个函数用于设置 curl 的选项,其使用方式如下:

bool curl_setopt ( resource $ch , int $option , mixed $value )
Copier après la connexion

其中,$ch 是 curl 的句柄(通常使用 curl_init 函数初始化),$option 是需要设置的选项,$value 是选项的值。针对超时时间,有两个选项可供设置:

CURLOPT_TIMEOUT:curl 请求最大执行时间(以秒为单位);
CURLOPT_CONNECTTIMEOUT:curl 请求连接超时时间(以秒为单位)。
Copier après la connexion

你可以使用如下代码来设置上述选项:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // 设置 curl 请求最大执行时间为 120 秒(2 分钟)
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // 设置 curl 请求连接超时时间为 30 秒
$result = curl_exec($ch);
curl_close($ch);
Copier après la connexion

在上面的代码中,我们设置了 curl 请求的最大执行时间为 120 秒,连接超时时间为 30 秒。如果 curl 请求在 120 秒内没有完成或者在 30 秒内没有成功建立连接,请求将被取消。

  1. 在 URL 中添加参数

如果你不想修改 PHP 配置或者使用 curl_setopt 函数,还可以在 URL 中添加参数来设置 curl 请求的超时时间。具体操作如下:

http://example.com/?curl_timeout=120&curl_connect_timeout=30
Copier après la connexion

在上面的 URL 中,我们在请求参数中添加了 curl_timeoutcurl_connect_timeout

    Utilisez la fonction curl_setopt

    Si vous n'êtes pas autorisé à modifier le fichier php.ini, vous pouvez utiliser la fonction curl_setopt pour définir le délai d'expiration curl dans le code PHP. Cette fonction est utilisée pour définir les options de curl. Elle s'utilise comme suit :

    rrreee🎜où, $ch est le handle de curl (généralement initialisé à l'aide de la fonction curl_init), et $. option est l'option qui doit être définie, $value est la valeur de l'option. Il y a deux options à définir pour le délai d'attente : 🎜rrreee🎜Vous pouvez utiliser le code suivant pour définir les options ci-dessus : 🎜rrreee🎜Dans le code ci-dessus, nous définissons le temps d'exécution maximum de la requête curl à 120 secondes et le délai d'expiration de la connexion. . est de 30 secondes. Si la demande curl ne se termine pas dans les 120 secondes ou si la connexion n'est pas établie avec succès dans les 30 secondes, la demande sera annulée. 🎜
      🎜🎜Ajouter des paramètres à l'URL🎜🎜🎜🎜Si vous ne souhaitez pas modifier la configuration PHP ou utiliser la fonction curl_setopt, vous pouvez également ajouter des paramètres à l'URL pour définir le délai d'attente pour requêtes curl. L'opération spécifique est la suivante : 🎜rrreee🎜Dans l'URL ci-dessus, nous avons ajouté les paramètres curl_timeout et curl_connect_timeout aux paramètres de la requête pour définir le délai d'expiration de la requête curl. curl lit automatiquement ces paramètres et applique leurs valeurs lors d'une requête. Cette méthode est relativement simple, mais présente un inconvénient : les paramètres contenus dans l'URL peuvent être interceptés ou modifiés par le navigateur ou le serveur proxy inverse. 🎜🎜🎜Résumé🎜🎜🎜En modifiant le fichier php.ini ou en utilisant la fonction curl_setopt ou en ajoutant des paramètres dans l'URL, nous pouvons définir le délai d'attente pour les requêtes curl en PHP. Lorsque vous utilisez curl, vous devez définir le délai d'attente de manière raisonnable en fonction de la situation spécifique. Ne définissez pas le délai d'attente trop long pour éviter d'affecter les performances du serveur. 🎜

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal