Heim > Artikel > Backend-Entwicklung > Wie stelle ich in PHP ein, dass Curl kein Timeout auslöst? Eine kurze Analyse mehrerer Methoden
In PHP ist Curl eine leistungsstarke Bibliothek zum Senden von HTTP-Anfragen. Allerdings wird bei einer Curl-Anfrage standardmäßig ein Timeout festgelegt, nach dessen Ablauf die Anfrage abgebrochen wird. Diese Zeit beträgt standardmäßig 1 Sekunde. In einigen Fällen möchten wir jedoch möglicherweise, dass die Curl-Anfrage über einen längeren Zeitraum ausgeführt wird, anstatt innerhalb des Standardzeitlimits abzubrechen. Wie stelle ich das Timeout der Curl-Anfrage über PHP-Code ein? Hier gibt es mehrere Möglichkeiten:
Wenn Sie über die Berechtigung zum Zugriff auf die php.ini-Datei verfügen, können Sie das Curl-Timeout in dieser Datei ändern. Suchen Sie in der Datei php.ini die folgenden zwei Optionen:
; 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
Wobei curl_timeout
die maximale Ausführungszeit der Curl-Anfrage und curl_connect_timeout
das Verbindungszeitlimit von Curl ist Anfrage. Sie müssen ihre Werte auf die gewünschte Zeit in Sekunden ändern. Nachdem die Änderung abgeschlossen ist, starten Sie den Apache- oder PHP-FPM-Dienst neu, damit sie wirksam wird. curl_timeout
是 curl 请求的最大执行时间,curl_connect_timeout
是 curl 请求的连接超时时间。你需要将它们的值改为你想要的时间(以秒为单位)。修改完毕后,重启 Apache 或者 PHP-FPM 服务使之生效。
如果你没有权限修改 php.ini 文件,可以在 PHP 代码中使用 curl_setopt 函数设置 curl 的超时时间。这个函数用于设置 curl 的选项,其使用方式如下:
bool curl_setopt ( resource $ch , int $option , mixed $value )
其中,$ch
是 curl 的句柄(通常使用 curl_init 函数初始化),$option
是需要设置的选项,$value
是选项的值。针对超时时间,有两个选项可供设置:
CURLOPT_TIMEOUT:curl 请求最大执行时间(以秒为单位); CURLOPT_CONNECTTIMEOUT:curl 请求连接超时时间(以秒为单位)。
你可以使用如下代码来设置上述选项:
$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);
在上面的代码中,我们设置了 curl 请求的最大执行时间为 120 秒,连接超时时间为 30 秒。如果 curl 请求在 120 秒内没有完成或者在 30 秒内没有成功建立连接,请求将被取消。
如果你不想修改 PHP 配置或者使用 curl_setopt 函数,还可以在 URL 中添加参数来设置 curl 请求的超时时间。具体操作如下:
http://example.com/?curl_timeout=120&curl_connect_timeout=30
在上面的 URL 中,我们在请求参数中添加了 curl_timeout
和 curl_connect_timeout
Funktion „curl_setopt“ verwenden
Wenn Sie keine Berechtigung zum Ändern der php.ini-Datei haben, können Sie die Funktion „curl_setopt“ verwenden, um das Curl-Timeout im PHP-Code festzulegen. Diese Funktion wird verwendet, um die Optionen von Curl festzulegen. Sie wird wie folgt verwendet:
rrreee🎜wobei$ch
das Handle von Curl ist (normalerweise mit der Funktion „curl_init“ initialisiert) und $ option
ist die Option, die festgelegt werden muss, $value
ist der Wert der Option. Es gibt zwei Optionen zum Festlegen des Timeouts: 🎜rrreee🎜Sie können den folgenden Code verwenden, um die oben genannten Optionen festzulegen: 🎜rrreee🎜Im obigen Code legen wir die maximale Ausführungszeit der Curl-Anfrage auf 120 Sekunden und das Verbindungszeitlimit fest . beträgt 30 Sekunden. Wenn die Curl-Anfrage nicht innerhalb von 120 Sekunden abgeschlossen wird oder die Verbindung nicht innerhalb von 30 Sekunden erfolgreich hergestellt wird, wird die Anfrage abgebrochen. 🎜curl_timeout
und curl_connect_timeout
zu den Anforderungsparametern hinzugefügt, um den Timeout-Zeitraum der Curl-Anfrage festzulegen. Curl liest diese Parameter automatisch und wendet ihre Werte an, wenn eine Anfrage gestellt wird. Diese Methode ist relativ einfach, hat jedoch einen Nachteil: Die in der URL enthaltenen Parameter können vom Browser oder Reverse-Proxy-Server abgefangen oder geändert werden. 🎜🎜🎜Zusammenfassung🎜🎜🎜Durch Ändern der php.ini-Datei oder Verwenden der Funktion „curl_setopt“ oder Hinzufügen von Parametern in der URL können wir das Timeout für Curl-Anfragen in PHP festlegen. Wenn Sie Curl verwenden, müssen Sie das Timeout entsprechend der jeweiligen Situation angemessen einstellen. Stellen Sie das Timeout nicht zu lang ein, um eine Beeinträchtigung der Serverleistung zu vermeiden. 🎜Das obige ist der detaillierte Inhalt vonWie stelle ich in PHP ein, dass Curl kein Timeout auslöst? Eine kurze Analyse mehrerer Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!