gpt4 book ai didi

php - 使用 PHP 可以进行异步 HTTP 请求吗?

转载 作者:IT王子 更新时间:2023-10-29 01:02:45 25 4
gpt4 key购买 nike

我有一个 PHP 脚本需要从远程服务器下载多个文件。目前,我只有一个循环下载和使用 cURL 处理文件,这意味着它不会开始下载一个文件,直到前一个文件完成 - 这会显着增加脚本运行时间。

是否可以启动多个 cURL 实例,例如,同时异步下载这些文件而不等待前一个完成?如果是这样,这将如何实现?

最佳答案

查看 curl-easy .它支持并行的阻塞和非阻塞请求或一次请求。此外,它是经过单元测试的,与许多简单或有缺陷的库不同。

披露:我是这个库的作者。这个库有它自己的测试套件,所以我很有信心它很健壮。

另外,请查看以下使用示例:

<?php
// We will download info about 2 YouTube videos:
// http://youtu.be/XmSdTa9kaiQ and
// http://youtu.be/6dC-sm5SWiU

// Init queue of requests
$queue = new cURL\RequestsQueue;
// Set default options for all requests in queue
$queue->getDefaultOptions()
->set(CURLOPT_TIMEOUT, 5)
->set(CURLOPT_RETURNTRANSFER, true);
// Set callback function to be executed when request will be completed
$queue->addListener('complete', function (cURL\Event $event) {
$response = $event->response;
$json = $response->getContent(); // Returns content of response
$feed = json_decode($json, true);
echo $feed['entry']['title']['$t'] . "\n";
});

$request = new cURL\Request('http://gdata.youtube.com/feeds/api/videos/XmSdTa9kaiQ?v=2&alt=json');
$queue->attach($request);

$request = new cURL\Request('http://gdata.youtube.com/feeds/api/videos/6dC-sm5SWiU?v=2&alt=json');
$queue->attach($request);

// Execute queue
$queue->send();

关于php - 使用 PHP 可以进行异步 HTTP 请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com