
其实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应用获取服务器资源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)