gpt4 book ai didi

PHP curl_multi - 如何限制文件的下载大小

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:51 24 4
gpt4 key购买 nike

我需要限制要下载的文件的大小,并尝试使用带有回调的 CURLOPT_PROGRESSFUNCTION 选项来检查下载的大小,并在超过 1kb 时以这种方式停止:

$progress_handler = function( $download_size, $downloaded, $upload_size, $uploaded ) {
return ( $downloaded > 1024 ) ? 1 : 0;
}

curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, $progress_handler);

我在几个下载大小在 ~100kb 的网站上测试了这个,但似乎并没有停在 1kb。还有其他方法可以应用该限制吗?

谢谢!

最佳答案

这个有效:

<?php

$url = 'https://example.com/file';

$ch = curl_init($url);

$bytes = 0;

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOHEADER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $data) use(&$bytes) {
static $size = 0;

//echo $data;

$size += strlen($data);

$bytes = $size;

if ($size > 1024) {
return -1;
}
return strlen($data);
});

$res = curl_exec($ch);

echo "Got $bytes bytes\n";

这个概念是使用CURLOPT_WRITEFUNCTION 从响应主体接收数据并增加函数本地的静态计数器。一旦字节数超过 1024,返回 -1 以中止传输。回调和程序共享一个值,因此您可以在传输后检查 $bytes 的值,看它是否大于您的目标大小。

关于PHP curl_multi - 如何限制文件的下载大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088145/

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