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) {
php怎样接收输入的数据
1.html
内容:
html
head
/head
body
form action="2.php" method="post"
input type="text" name="user" /
input type="submit" value="提交"
/form
/body
/html
2.php
内容:
echo $_POST['user'];
可以用get传,但是相对于的php页面也要用$_GET 接收。
PHP怎么接收数据
三中接受方式:
$_GET //get过来的数据
$_POST //post过来的数据
file_get_contents("php://input") //接口过来的xml等字符串数据用这个接
这三个方法足以接受任何数据了,具体你还要百度一下用法
网站题目:php接收head数据 php的header函数
新闻来源:http://scgulin.cn/article/hjpies.html