前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >PHP cURL 函数初学者完全指南

PHP cURL 函数初学者完全指南

作者头像
Tinywan
发布2025-01-13 12:29:38
发布2025-01-13 12:29:38
13100
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

cURL 是一个 PHP 库和一个命令行工具,使我们能够使用 URL 语法接收和传输数据。它可以以多种形式传输数据,包括 HTTP 帖子、HTTP 获取、FTP 上传和下载、cookie、SOAP 请求和响应等。

使用此 PHP 扩展的 Web 服务器可能需要最合适的数据,这些数据可以在网页数据库中检索。网页中包含的数据中,越来越多的数据是从外部来源获得的支持,在整个 Web 应用程序中广泛存在。

其他互联网服务提供的数据可以使用 cURL 轻松管理。程序员可以使用 cURL 的多功能工具测试他们的 API 请求并快速接收性能结果。利用 cURL 的嵌入式库,您还可以从许多其他站点收集数据。

cURL 对 SSL、安全管理、证书身份验证和 HTTP Cookie 提供直观的支持。它可以作为终端框架或动态库 (libcurl) 同时安装,可以嵌入到其他应用程序中。

PHP cURL

我们先来看看什么是 PHP 中的 cURL?cURL 库允许我们使用各种协议与其他服务器互动。它使用户能够使用 URL 语法传输和接收数据。cURL 可以进一步提高安全性、发送和接收 cookie、将数据导入网站以及评估故障排除。

cURL 作为 URL 的客户端,“URL”以大写字母转录以突出它与 URL 的交互方式。PHP cURL 模型包括两个选项:libcurlcURLlibcURL 是一个库,程序员可以将其合并到各种应用程序中。cURL 是一种命令行数据传输工具。

cURL 是一种命令行功能,用于通过 URL 语法获取和传输数据。由于 cURL 主要专注于 libcurl,因此它目前支持各种常见协议,例如 HTTP、HTTPS、FTP、FTPS、GOPHER、TELNET、DICT 和 FILE。

cURL 库用于使用一系列协议与大多数其他服务器协作。由于 cURL 旨在在没有用户交互的情况下运行,因此它可以用于脚本甚至 cron 作业。

libcurl 是一个基本的客户端 URL 传输库,提供 TTPS 证书、HTTP POST、HTTP PUT、FTP 上传、Kerberos、基于 HTTP 的上传、代理、cookie、用户和密码身份验证、HTTP 代理隧道和许多其他功能。

PHP cURL 扩展

要使用 PHP 的 cURL 功能,您需要安装 libcurl 包。cURL 在 PHP 中默认启用,但如果没有,您可以按照以下步骤在您的环境中启用它:

  1. 打开 PHP 配置文件 php.ini
  2. 查找 extension=php_curl.dll 这行
  3. 从行首删除分号 ;
  4. 重新启动 PHP-FPM 服务(命令行模式不需要)

要执行基本的 PHP cURL 请求-响应周期,请执行以下步骤:

step1. 设置 cURL 会话

代码语言:javascript
代码运行次数:0
复制
$curl = curl_init();

step2. 会话可以配置各种选项

代码语言:javascript
代码运行次数:0
复制
curl_setopt($handle, CURLOPT_URL, $url);

step3. 执行从服务器获取数据/向服务器发送数据

代码语言:javascript
代码运行次数:0
复制
$response = curl_exec($handle);

step4. 终止会话

代码语言:javascript
代码运行次数:0
复制
curl_close($handle);

PHP cURL 初始化流程

简单示例

下面是一个在 PHP 中使用 cURL 向 URL 发出 GET 请求的简单示例

代码语言:javascript
代码运行次数:0
复制
<?php
// Initialize cURL session
$curl = curl_init();

// Set the URL to be requested
curl_setopt($curl, CURLOPT_URL, "https://www.example.com");

// Return the response as a string instead of outputting it
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// Execute the cURL request and get the response
$response = curl_exec($curl);

// Check if the cURL request was successful
if ($response === false) {
    echo "cURL Error: " . curl_error($curl);
} else {
    // Print the response
    echo $response;
}

// Close the cURL session
curl_close($curl);

此示例使用curl_init()初始化 cURL 会话,使用curl_setopt(curl, CURLOPT_URL, "https://www.example.com")设置要请求的 URL,使用curl_setopt(

然后检查响应是否成功,如果成功,则打印。最后,使用curl_close($curl)关闭 cURL 会话。

PHP cURL 实例

以下是如何在 PHP 中将 cURL 用于各种目的的一些示例

在PHP cURL中发出 GET 请求

要在 PHP 中使用 cURL 发出 GET 请求,您可以使用以下代码:

代码语言:javascript
代码运行次数:0
复制
<?php

$url = "https://api.example.com/endpoint?key1=value1&key2=value2";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

此代码将向位于url的 API 端点发出 GET 请求。来自 API 的响应将存储在response变量中,并且可以使用echo输出。

使用 PHP cURL 发出 POST 请求

以下是在 PHP 中使用 cURL 向 API 端点发出包含 JSON 数据的 POST 请求的示例:

代码语言:javascript
代码运行次数:0
复制
<?php

$url = "https://api.example.com/endpoint";
$data = ["key1" => "value1", "key2" => "value2"];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

此代码将向位于url的 API 端点发出 POST 请求,并将数据data编码为 JSON。CURLOPT_HTTPHEADER选项设置为将Content-Type标头指定为application/json。来自 API 的响应将存储在

使用 PHP cURL 从网络下载文件

要在 PHP 中使用 cURL 从网络下载文件,可以使用以下代码:

代码语言:javascript
代码运行次数:0
复制
<?php

$url = "https://www.example.com/file.zip";
$file = "file.zip";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);

$fp = fopen($file, "w");
fwrite($fp, $data);
fclose($fp);

在 PHP 中使用 cURL 处理重定向 (HTTP 301,302)

要在 PHP 中使用 cURL 处理重定向(HTTP 301 和 302 状态代码),您可以在 cURL 请求中将CURLOPT_FOLLOWLOCATION选项设置为true

下面是一个示例:

代码语言:javascript
代码运行次数:0
复制
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$result = curl_exec($ch);

curl_close($ch);

echo $result;

使用 PHP cURL 将 cURL 错误记录到文件中

要在 PHP 中使用 cURL 将 cURL 错误记录到文件中,可以将以下代码添加到您的 cURL 请求中:

代码语言:javascript
代码运行次数:0
复制
<?php

$url = "https://api.example.com/endpoint";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    $error_message = curl_error($ch);
    $log_file = "curl_error.log";
    $log = fopen($log_file, "a");
    fwrite($log, "[" . date("Y-m-d H:i:s") . "] " . $error_message . "\n");
    fclose($log);
}

curl_close($ch);

echo $response;

此代码会将任何 cURL 错误写入与脚本位于同一目录中的名为curl_error.log的日志文件中。错误日志将包括错误消息以及错误的日期和时间。

这些示例演示了如何使用 cURL 在 PHP 中发出 HTTP 请求,但还有许多其他选项和设置可用。

并行多个 cURL 请求

在 PHP 中,您可以使用curl_multi_exec函数同时发出多个 cURL 请求。这使您可以通过减少请求之间的等待时间来提高脚本的速度和效率。

以下是如何使用curl_multi_exec的简单示例:

代码语言:javascript
代码运行次数:0
复制
<?php

// Initialize multiple cURL requests
$mh = curl_multi_init();

// Add multiple cURL handles
$curl1 = curl_init();
curl_setopt($curl1, CURLOPT_URL, "http://example.com/api1");
curl_multi_add_handle($mh, $curl1);

$curl2 = curl_init();
curl_setopt($curl2, CURLOPT_URL, "http://example.com/api2");
curl_multi_add_handle($mh, $curl2);

// Execute multiple cURL requests
$running = null;
do {
    curl_multi_exec($mh, $running);
} while ($running);

// Get the results of each cURL request
$result1 = curl_multi_getcontent($curl1);
$result2 = curl_multi_getcontent($curl2);

// Clean up cURL resources
curl_multi_remove_handle($mh, $curl1);
curl_multi_remove_handle($mh, $curl2);
curl_multi_close($mh);

在这个 Php curl 示例中,我们使用curl_multi_init 函数初始化多个 cURL 请求,然后使用curl_multi_add_handle添加两个 cURL 句柄。

我们使用curl_multi_exec执行请求,并通过检查$running变量的值来等待所有请求完成。

请求完成后,我们可以使用curl_multi_getcontent检索每个请求的结果,并使用curl_multi_remove_handlecurl_multi_close清理资源。

PHP cURL 函数用途

以下是 PHP cURL 库的一些常见用途:

  • 发送 HTTP 请求:cURL 可以向服务器发送 HTTP 请求,包括 GET、POST、PUT 和 DELETE 请求。这可用于各种目的,例如从 API 获取数据、提交表单数据或将文件上传到服务器。
  • 抓取网页: cURL 可用于从网页中抓取数据,允许您从网站中提取信息并在 PHP 代码中使用。
  • 下载文件: cURL 可用于从服务器下载文件(例如图像或文档),并将其保存在本地系统上。
  • 上传文件: cURL 可用于使用 POST 或 PUT 请求等方法将文件(例如图像或文档)上传到服务器。
  • 检查 URL: cURL 可用于检查 URL 的状态并确定它是否可访问。例如,这可用于检查网站是否关闭。
  • 在服务器之间传输数据: cURL 可用于在服务器之间传输数据,例如将数据从一个服务器发送到另一个服务器进行处理或存储。
  • 使用不同的协议发送请求: cURL 支持各种协议,包括 HTTP、HTTPS、FTP、FTPS 等,因此它可以用于许多与网络相关的任务。

这些只是 PHP cURL 库的众多用途中的一小部分。它的多功能性使其成为处理数据和与服务器交互的强大工具。

小结

cURL 是自动执行重复性任务和测试 API 的有效工具。libcurl 是一种广泛使用的开源跨平台库,与多种 Well 语言兼容。

您可以使用其中 380 多个标志之一来增强 cURL 的几乎每个属性。使用 cURL,开发人员可以从网站、用户界面、数据集等快速、牢固地获取数据。

通过在 PHP 扩展中使用 cURL 快速、轻松地与其他网页协作,特别是那些可以访问第三方数据的网页。该扩展特别有用,因为它可以更轻松地从其他网站获取信息。

无需手动编写复杂的代码,它使我们能够快速安全地检索信息。对于许多希望从网站快速访问数据而不必担心编写代码来手动完成的 Web 开发人员来说,cURL 已成为著名的扩展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • PHP cURL
  • PHP cURL 扩展
    • step1. 设置 cURL 会话
    • step2. 会话可以配置各种选项
    • step3. 执行从服务器获取数据/向服务器发送数据
    • step4. 终止会话
  • PHP cURL 初始化流程
  • 简单示例
  • PHP cURL 实例
    • 在PHP cURL中发出 GET 请求
    • 使用 PHP cURL 发出 POST 请求
    • 使用 PHP cURL 从网络下载文件
    • 在 PHP 中使用 cURL 处理重定向 (HTTP 301,302)
    • 使用 PHP cURL 将 cURL 错误记录到文件中
  • 并行多个 cURL 请求
  • PHP cURL 函数用途
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档