Code前端首页关于Code前端联系我们

PHP函数curl_exec:执行HTTP请求并获取响应内容

terry 2年前 (2023-09-30) 阅读数 63 #PHP
文章标签 PHP
PHP是一种广泛使用的服务器端脚本语言,提供了许多强大的扩展和功能,其中包括curl扩展,可用于与各种服务通信。在本文中,我们将学习如何使用PHP的curl_exec函数来执行HTTP请求并检索响应内容。

1。 curl_exec简介

当使用curl扩展发送请求时,我们使用curl_init()函数来初始化curl资源并使用curl_setopt()函数来设置请求选项。然后我们使用curl_exec()函数来执行请求。 curl_exec() 函数执行一个curl 会话并返回一个响应。 可以在curl_setopt()函数中设置以下选项:
  • CURLOPT_URL:设置所需的 URL。
  • CURLOPT_RETURNTRANSFER:以字符串形式返回结果,而不是直接输出。
  • CURLOPT_POST:设置为 true 以使用 POST 请求。
  • CURLOPT_POSTFIELDS:在 POST 请求期间发送的数据。
以下是使用curl_exec()函数发送GET请求并输出响应的示例代码:
$url = "https://www.example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

2。函数curl_exec的参数

curl_exec() 函数有一个参数,即curl 源。

3。 Curl_exec 函数返回值

curl_exec() 函数执行一个curl 会话并返回一个响应。如果请求失败,则返回 false。

4。使用curl_exec函数运行POST请求并获取响应内容

您可以使用curl_setopt()函数设置CURLOPT_POST选项来发送POST请求。可以使用 CURLOPT_POSTFIELDS 选项指定要发布的数据。以下是使用curl_exec()函数发送POST请求并输出响应的示例代码:
$url = "https://www.example.com";
$data = array(
  'name' => 'John Doe',
  'email' => 'john@example.com'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

5。错误处理函数curl_exec

使用curl_exec()时可能会出现一些错误,例如超时、无法解析主机名等。您可以使用curl_error()来获取错误消息,并使用curl_errno()来获取错误代码。这是错误处理代码示例:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$response = curl_exec($ch);
if(curl_errno($ch)) {
  echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch); 

6。使用curl_multi_exec函数同时处理多个请求

您可以使用curl_multi_init()函数初始化curl多处理器,并使用curl_multi_add_handle()函数向其添加多个curl句柄。然后可以使用curl_multi_exec()函数并行执行所有句柄。可以使用curl_multi_getcontent() 函数检索对所有已完成请求的响应。 以下是使用curl_multi_exec()函数并行发送多个请求并检索响应的示例代码:
$urls = array(
  "https://www.example.com/",
  "https://www.example.net/",
  "https://www.example.org/"
);

$mh = curl_multi_init();
$handles = array();

foreach($urls as $url){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_multi_add_handle($mh, $ch);
  $handles[] = $ch;
}

$active = null;
do {
  $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
  if (curl_multi_select($mh) > -1) {
    do {
      $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  }
}

foreach($handles as $ch){
  $response = curl_multi_getcontent($ch);
  curl_multi_remove_handle($mh, $ch);
}

curl_multi_close($mh);

7。总结

在这篇文章中,我们介绍了curl_exec()函数的使用。通过此功能,您可以轻松地与不同的服务进行通信并获得答案。还介绍了一些可以在curl 会话中设置的curl_setopt() 选项。此外,我们还介绍了错误处理和多个请求并行处理的技术。希望本文能帮助您更好地了解 PHP curl_exec() 函数的用法和应用。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门