如果我使用fopen通过HTTP打开远程文件,将如何获得内容大小

时间:2013-11-25 14:51:56

标签: php curl stream wrapper

所以

$f = fopen('http_url_site_com_my_file_ext');
$info = stream_get_meta_data($f);

http://us1.php.net/manual/ru/function.stream-get-meta-data.php

正如我们在文档中读到的那样,我可以在

中找到内容长度
echo $info['wrapper-data'][#] ; // --> Content-length: 438;

echo $info['wrapper_type']; //--> http

就我而言,我明白了 cURL而不是http

$info['wrapper-data']['headers']; //empty array

所以我无法得到足够的回应。

=========== 信息http://www.php.net/manual/en/reserved.variables.httpresponseheader.php

我们可以获得响应标题

$f = fopen('http_url_site_com_my_file_ext');
var_dump($http_response_header); // --> null.
$data = fread($f, 100);
var_dump($http_response_header); // --> array of all response headers.

但是我的代码非常糟糕。我们在开始时打开很多文件(如果其中一个是fault - die())

然后,我们从已打开的文件中读取。

============ 问题

1)如果我将编译php没有“--with-curlwrappers”,为什么这个实验性功能存在? --- php 5.4.21(php-fpm) ---在phpinfo中,我看不到构建选项为'--with-curlwrappers'

2) 或者如何在不阅读流的情况下获得响应标题

???

请帮助我。

1 个答案:

答案 0 :(得分:0)

是否必须使用fopen而不是cURL?

此示例适用于cURL

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $http_url_site_com_my_file_ext);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$r = curl_exec($ch);

print_r($r);  

如果启用了HTTP扩展,也可以使用http_head。