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

php的curl如何使用head协议来获取资源的大小等信息,第1张

其实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) {

游戏结束后在分数统计界面中点击保存按钮,然后输入录像名即可保存本次战斗的录像。

游戏资源提取器提供游戏资源获取功能,可以帮助用户在软件上快速将游戏中的资源提取,您可以将游戏文件添加到软件,随后选择需要提取的格式,可以选择对视频、音乐、素材等内容提取。

我曾经试图在applet中通过读取服务器上的一个xml文件来创建一棵树型结构。在寻找了很多资料后,发觉这种做法好像行不通。Applet是运行在客户端的脚本,个人认为很难或者是无法获取服务器端的资源。

       通过这次的学习,我掌握了几种获取服务器资源的方法。归纳如下:

1.  在servlet中通过getServletContext()getRealPath(“”)可以获得服务器某个资源的真实路径,然后可以通过创建URL,或者创建IO流来获取资源。

2.  在servlet中通过getServletContext()getResourceAsStream(“”)来获得资源流。

3.  在jsp中通过pageContext来获得ServletContext对象pageContextgetServletContext(),然后用1,2种方法都可以获得服务器资源。

4.  在一般的javaBean中,通过thisgetClass()getResourceAsStream(“”)可以获得和javaBean的class文件一个目录下的资源。

以上就是关于php的curl如何使用head协议来获取资源的大小等信息全部的内容,包括:php的curl如何使用head协议来获取资源的大小等信息、如何从单机游戏里提取视频文件、关于如何在java的web应用获取服务器资源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10123857.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存