当前位置:首页 » 编程语言 » php获取协议

php获取协议

发布时间: 2025-08-30 07:33:16

A. php的curl如何使用head协议来获取资源的大小等信息

其实curl里面早就有对HEAD协议的支持// 只需要在你的代码中加上这样一行,就会自动选择head协议
curl_setopt($ch, CURLOPT_NOBODY, true);
如果你要读取
Content-Length
,那么只需要在curl_exec后// 读取的header里的Content-Length值
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
需要说明的是HEAD协议虽然被大部分服务器支持,但也不是说所有的服务器都支持,有的服务器为了防抓取,在设置中干掉了这个协议。而
Content-Length
也不是必须的字段,你应该做到如果有这个值,而且超过了最大值,可以返回错误,如果没有这个值,或者没有超过最大值,就必须自己通过已经下载的内容大小来判断。
至于你说的最大资源下载长度,我还没看到这个设置项,不过这个问题有一个更加美好的解决方案,那就是用到
CURLOPT_HEADERFUNCTION和CURLOPT_WRITEFUNCTION
两个回调,那么就只需要一次请求即可完成所有的判断,而且可以随时断掉$size = 0;$max_size = 123456;
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) {
// 第一个参数是curl资源,第二个参数是每一行独立的header!
list ($name, $value) = array_map('trim', explode(':', $str, 2));
$name = strtolower($name);
// 判断大小啦
if ('content-length' == $name) {
if ($value $max_size) {
return 0; // 返回0就会中断读取}}});
// 对于没有content-length的,我们一边读取一边判断
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $str) use (&$size) {
$len = strlen($str);
$size += $len;
if ($size $max_size) {

热点内容
c语言ifelse语句配对 发布:2025-08-30 10:12:52 浏览:286
mui缓存数据 发布:2025-08-30 10:08:09 浏览:755
oracle安装脚本 发布:2025-08-30 09:56:57 浏览:638
小麦存储量 发布:2025-08-30 09:49:03 浏览:955
挂锁怎么改密码 发布:2025-08-30 09:47:31 浏览:569
优酷上传视频比例 发布:2025-08-30 09:37:42 浏览:368
我的世界怎么看服务器直连地址 发布:2025-08-30 09:37:03 浏览:554
视频文件的存储方式 发布:2025-08-30 09:28:24 浏览:148
u解压 发布:2025-08-30 09:22:15 浏览:804
服务器创建数据库 发布:2025-08-30 09:07:36 浏览:678