- 浏览: 2542408 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
文件的大小函数为:filesize()
文件是否存在的函数为:file_exits();
但是这两个函数只针对本地
那么:远程文件是否存在,远程文件大小 如何得知呢?
搜索了一下,有人居然说,把远程文件下载过来再判断这个远程文件的大小,这是什么歪理。
庆幸大部分人还是清醒的,一般应该使用判断header反馈的信息进行判断。
php中如何获得header信息呢? php的函数真多,这个也不例外
----------------------1.最简单的获取远程文件大小办法
$a_array = get_headers(url,true);
url就是网址了,至于第二个参数
就可以得到类似下面的这个数组
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May
2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix)
(Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag]
=> "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length]
=> 438
[Connection] => close
[Content-Type] =>
text/html
)
所以,你可以很舒服的拿到远程文件的大小$file_sizeofurl =
a_array['Content-Length'];
--------------------2.用curl获取远程文件大小
如果服务器禁止get_headers
怎么办?
换一种办法,用curl
我总觉得curl就像一个虚拟的用户,什么都能模仿
下面直接给出一个老外的函数
请注意echo '
head-->'.$head.'<----end
';
这句是我加的,为了知道header里面到底包含了什么东西function
remote_filesize($uri,$user='',$pw='')
{
// start output
buffering
ob_start();
// initialize curl with given uri
$ch =
curl_init($uri);
// make sure we get the header
curl_setopt($ch,
CURLOPT_HEADER, 1);
// make it a http HEAD request
curl_setopt($ch,
CURLOPT_NOBODY, 1);
// if auth is needed, do it here
if (!empty($user)
&& !empty($pw))
{
$headers = array('Authorization: Basic ' .
base64_encode($user.':'.$pw));
curl_setopt($ch, CURLOPT_HTTPHEADER,
$headers);
}
$okay = curl_exec($ch);
curl_close($ch);
// get the
output buffer
$head = ob_get_contents();
// clean the output buffer and
return to previous
// buffer settings
ob_end_clean();
echo '
head-->'.$head.'<----end
';
// gets you the numeric value from the Content-Length
// field in the http
header
$regex = '/Content-Length:s([0-9].+?)s/';
$count =
preg_match($regex, $head, $matches);
// if there was a Content-Length field, its value
// will now be in
$matches[1]
if (isset($matches[1]))
{
$size =
$matches[1];
}
else
{
$size =
'unknown';
}
//$last=round($size/(1024*1024),3);
//return $last.'
MB';
return $size;
}
-----------------3.fsock获取远程文件大小的办法
先给函数function
getFileSize($url){
$url = parse_url($url);
if($fp =
@fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
fputs($fp,"GET
".(empty($url['path'])?'/':$url['path'])."
HTTP/1.1rn");
fputs($fp,"Host:$url[host]rnrn");
while(!feof($fp)){
$tmp
= fgets($fp);
if(trim($tmp) == ''){
break;
}else
if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
return
trim($arr[1]);
}
}
return null;
}else{
return
null;
}
}
哪个获取远程文件大小最快?
针对同一个url进行测试,curl > fsock >
getheader
针对不同url测试,结果还是 curl > fsock >
getheader
当然也许这个测试是不准确的,但getheader函数是明显要慢一些的
考虑到curl模块没有fsock那么普及,所以我自己还是用后面一个
速度上的差别大约是 curl比fsock快0.2秒,fsock比getheader快0.2秒。
发表评论
-
wamp 升级php apache mysql
2014-02-18 14:30 1192wamp对于日常开发来说会增添非常大的方便 但是对于集成 ... -
[被震撼到了]我的2009年自我反省【也名10问PHP程序员】php程序员进阶篇
2012-10-29 11:22 10101.首先看了PHP的源码API函数 ,对于许多口水仗的争论一 ... -
五种常见的PHP设计模式
2012-08-15 13:37 1100原文地址:http://www.ibm.com/develop ... -
PHP的Realpath Cache
2012-07-03 09:53 3760PHP的缓存有很多种,包括输出缓冲(ob系列函数),opcod ... -
nginx+php-fmp 内存不释放
2012-06-20 11:01 5237由于服务器只有600M的内 ... -
[转]探究php底层运行机制
2012-04-17 14:36 2098http://www.myext.cn/Article/921 ... -
APC 缓存
2012-04-16 16:22 6118APC主要有两个作用,一是将php的编译缓存保存在共享内存中, ... -
【汇总】PHP-FPM 配置优化
2012-02-25 11:41 17350http://www.linuxidc.com/Linux/2 ... -
【推荐转载】谁贪占了我的系统资源 php-fpm
2012-02-16 14:12 1371测试人员向我们反映:在Facebook平台的游戏比其它平台 ... -
php代码性能分析工具:XHProf
2012-01-30 15:11 4893http://www.ooso.net/archives/52 ... -
神奇的Fastcgi_Finish_Request
2012-01-17 10:52 1257当PHP运行在FastCGI模式时,PHP FPM提供了一个名 ... -
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 解决办法
2011-11-07 17:18 3395;extension=php_xdebug.dll z ... -
【转】php 程序员
2011-11-05 12:01 951http://www.blags.org/php-pro ... -
cookies之PHPSESSID
2011-10-24 21:52 2952// 设置str function get_cooki ... -
并发同步
2011-10-11 14:26 1453============================= ... -
PHP核心编译配置选项列表
2011-09-15 11:21 1233PHP 的编译配置详细选项 ... -
Hudson_CI:PHP持续集成
2011-09-09 16:29 3099一、持续集成的概念 概念网上很多了,这里就不再详细说了。 ... -
try{}catch{}
2011-07-22 15:13 1219<?php /* 检测(try)、抛出(th ... -
PHP内存溢出Allowed memory size of 解决办法
2011-07-01 12:57 20603============================All ... -
?php消息队列
2011-06-22 09:45 2439php-通过共享内存实现消息队列和进程通信的两个类 h ...
相关推荐
用curl函数读取远程文件 用file_getcontents提交数据 用php生成扭曲,有角度的验证图片(支持中文) 用正则加亮关键字 程序运行过程中直接输出 缩略图带版权信息函数 缩略图类 获得用户操作系统的换行符 ...
除了提供的`getFileSize()`函数外,还有其他方法可以获取远程文件大小,例如使用cURL库。cURL库提供了更高级的功能,如SSL支持、HTTP代理、重定向处理等,但其使用相对复杂一些。 总结一下,本篇文章介绍了一个简单...
本文主要探讨了三种不同的JS方法来获取文件大小,这些方法主要适用于浏览器环境,尤其是Internet Explorer。 方法一:利用ActiveX控件 在较旧版本的IE浏览器中,可以使用ActiveX技术来访问本地文件系统。ActiveX...
您可能感兴趣的文章:php下载远程文件类(支持断点续传)PHP 远程文件管理,可以给表格排序,遍历目录,时间排序获取远程文件大小的php函数PHP 获取远程文件内容的函数代码PHP 网络开发详解之远程文件包含漏洞php带...
总结来说,这个PHP实例展示了如何利用HTTP头部信息获取远程文件大小,并使用文件流分块下载大文件。在实际应用中,还可以考虑增加错误处理、进度条显示、断点续传等功能,以提高用户体验。了解并掌握这些技巧对PHP...
这个示例展示了如何使用 `fopen()` 下载远程文件,但需要注意的是,这种方法可能会受到网络条件、服务器配置、文件大小等因素的影响,实际应用中应考虑异常处理和错误检测。 此外,`fopen()` 有时候无法处理大型...
除了cURL之外,PHP还提供了其他几个用于文件操作的函数,如`fopen`,`fgets`,`ftell`等,理论上也可以用来估算远程文件大小。但由于这些方法涉及到实际读取文件内容,如果文件非常大或网络环境不佳,可能会消耗大量...
以下是一个使用file_get_contents()函数获取远程文件大小的示例代码: ```php <?php $file = file_get_contents($url); echo strlen($file); ?> ``` 在上述代码中,$url变量应包含远程文件的URL地址。当file_get_...
【标题】"基于PHP的小哦远程文件下载程序源码 php版.zip" 提供的是一个用PHP语言编写的轻量级远程文件下载程序的源代码。这个程序允许用户通过Web界面来下载存储在服务器上的文件,提高了文件管理的便捷性。 【描述...
该压缩包文件“PHP实例开发源码-小哦远程文件下载程序源码 php版.zip”包含了一个基于PHP的远程文件下载程序的源代码。通过这个程序,用户可以实现在服务器端下载远程网络上的文件,无需直接访问源站点,提高了下载...
这部分代码的实现过程中,使用了几个关键的PHP函数,如`fopen()`用于打开本地文件准备写入,`fwrite()`用于将图片数据写入文件,`fclose()`用于关闭文件,以及`strlen()`计算图片数据的大小。这些函数在PHP中常用于...
5. `file_get_contents()`: 用于读取文件内容,可以是本地文件也可以是远程URL,对于简单的文件读取操作非常便捷。 6. `json_encode()` 和 `json_decode()`: 这两个函数用于JSON数据的编码和解码,是PHP与...
为了记录文件元数据(如文件名、大小、创建日期等),系统常与数据库结合。MySQL是常用的数据库,通过PDO(PHP Data Objects)扩展进行连接和查询。 7. 搜索功能 实现文件搜索,可能需要索引文件内容,使用全文搜索...
PHP中检索或复制远程文件是常见的功能需求,可以通过PHP的copy函数实现。copy函数用于将文件从一个位置复制到另一个位置,当目标位置是远程服务器上的文件时,可以指定完整的URL来复制远程文件到本地服务器。在本文...
《PHP在线管理文件系统详解》 在Web开发领域,PHP是一种广泛应用的服务器端脚本语言,尤其在构建动态网站和...通过不断优化和扩展,这样的系统可以满足各种复杂的文件管理需求,为用户提供便捷的远程文件管理服务。
### PHP远程下载文件并保存知识点解析 #### 一、函数定义与参数说明 该脚本定义了一个名为`getFile`的函数,用于实现从远程服务器下载文件,并将其保存到本地指定目录的功能。 - **函数签名**: ```php ...
除此之外,PHP的这些文件函数不能用来获取远程文件的属性。它们只能作用于本地服务器文件系统中的文件,这意味着你必须保证要查询的文件是在本地服务器上有访问权限的。 总结一下,PHP提供了多个函数来获取文件的...