PHP 获取远程文件大小常用方法总结

 更新时间:2016年11月25日 16:47  点击:1721
php有很多方法可以获取远程文件大小的哦,最常用的就有fsockopen、file_get_contents、curl函数哦,下面我来给各位总结一下。

1、fsockopen

 代码如下 复制代码

<?php
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;
}
}
//调用方法
echo getFileSize("http://www.111cn.netnet/")
?>


2、使用file_get_contents()

 代码如下 复制代码

<?php
$file = file_get_contents($url);
echo strlen($file);
?>

3. 使用get_headers()

 代码如下 复制代码

<?php
$header_array = get_headers($url, true);

//返回结果
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
)
 


$size = $header_array['Content-Length'];
echo $size;
?>

4.curl

 代码如下 复制代码

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 (!emptyempty($user) && !emptyempty($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 '<br>head-->'.$head.'<----end <br>';
 
    // 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;
}

文章详细介绍PHP内置的Math函数的些使用过程的问题,希望些方法对各位有所帮助哦。

如题所示。。。木有做大规模的运算,还不知道。。。擦,PHP的Math函数运算原来是如此之慢的。。。大家还是麻烦点,手写多几句算鸟~~~

小二!上代码。。。。

 

 代码如下 复制代码
$start = microtime(TRUE);  
for ($i=0; $i < 200000; $i++)   {  
    $s = 0;       for ($j=0; $j < 3; $j++)       {   
       $s += ($j+$i+1) * ($j+$i+1);       }  
}  
echo microtime(TRUE) – $start;   # output: 0.33167719841003 

 

再对比下用Math函数的代码和结果

 代码如下 复制代码
$start = microtime(TRUE);  
for ($i=0; $i < 200000; $i++)   {  
    $s = 0;       for ($j=0; $j < 3; $j++)       {   
       $s += pow($j+$i+1, 2);       }  
}  
echo microtime(TRUE) – $start;   # output: 0.87528896331787 

 

看到木有,效率提升100%丫。。。以前还一直都认为是PHP内置的Math快,真是不测不知道。。像取绝对值abs,最大值max,最小值min 等 效率都不如原生的 if判断来得快~~

总的来说,php运算的确是很慢~~ 真心不适合做大规模的算法运算~~

在php中要获取或目录权限我们可使用fileperms函数来获取,fileperms() 函数返回文件或目录的权限,。若成功,则返回文件的访问权限。若失败,则返回 false。

例子 1

 代码如下 复制代码
<?php
echo fileperms("test.txt");
?>

输出:

33206

例子2

 代码如下 复制代码

/*
 * substr 返回字符串的子串
 * base_convert  在任意进制之间转换数字
 * fileperms  取得文件的权限
 */
// 获取权限
function getChmod($filepath){
    return substr(base_convert(@fileperms($filepath),10,8),-4);
}

本文章来介绍一个简单的文件操作函数fopen,fopen函数可以打开,读取,并且协助文件保存,下面我来给大家总结一下php文件的操作。

打开文件

fopen 最简单语法如下:

fopen(filepath,mode)

下面是打开一个文件的 PHP 代码示例:

 代码如下 复制代码

<?php

$f = fopen("c:\data\info.txt", "r");

?>

其中,c:\data\info.txt 是文件路径,r 表示打开文件的模式(mode) 为只读 (read only) 模式。

 

讲述使用 PHP 内置函数 fclose 关闭一个文件。

fclose 函数语法如下:

fclose(filepointer)

如果成功,fclose 函数返回 TRUE,如果失败,fclose 函数返回 FALSE。

下面是一个 fclose 函数的 PHP 代码示例:

 代码如下 复制代码

<?php

$f = fopen("c:\data\info.txt", "r");
fclose($f);
?>

fwrite 写入文件


fwrite 函数。

PHP 内置函数 fwrite 用于写入文件。

fwrite 函数的常用语法为:

fwrite(handle,string)
其中,参数 handle 表示文件指针资源 (通常由 fopen 函数创建),string 表示要写入的内容。

下面一个PHP 代码示例演示如何创建一个新文件,并写入内容,然后保存并关闭文件:

 代码如下 复制代码

<html>
<body>
<?php
$f= fopen("C:\blabla\php\write.txt","w");
fwrite($f,"It is awesome.");
fclose($f);echo "done";
?>
</body>
</html>

执行该 PHP 文件后,会创建一个路径为 C:blablaphpwrite.txt 的文件,文件的内容是It is awesome.。

如果你想在现有文件上再追加内容,你只要修改 fopen 的 参数 mode 值即可,如下:

 代码如下 复制代码

$f= fopen("C:\blabla\php\write.txt","a");

有关 fopen 函数的参数 mode 值,详见 fopen。

fwrite 函数返回写入文件的字节数 (number of bytes) ,如果出错,返回 FALSE。


fgets 读取文件一行内容


用 PHP 内置函数 fgets 可以读取文件的一行内容。

fgets读取文件一行内容的语法是:

fgets(filepointer)

下面我们举个例子讲述如何一行行读取一个文件。

假设我们有一个 sites.txt 文件,该文件有三行,内容如下:

woyouxian.comblabla.cngoogle.com
sites.txt 的文件路径是:

C:blablaphpsites.txt
我们用 PHP 一行行读取文件内容,PHP代码如下:

 代码如下 复制代码
<html><body><?php
$f= fopen("C:\blabla\php\sites.txt","r");
while (!feof($f))

$line = fgets($f); 
echo "site: ",$line,"<br />";
}fclose($f);
?>
</body></html>

执行该 PHP 文件,返回的显示结果是:

site: woyouxian.comsite: blabla.cnsite: google.com

该 PHP 代码的第一行是打开文件,最后一行是关闭一个文件。当中的 while 循环语句表示,当文件没有结束,就读取一行,循环执行,直到文件指针到文章末尾为止。

feof 函数是PHP 的一个内置函数,用来测试文件指针是否已经到了文件末尾。如果是返回 TRUE,如果不是,返回 FALSE。eof 的英文意思就是 end of file,很容易记。

正常情况下,fgets 函数的返回值是一个字符串,如果出错,返回 FALSE

implode()昨天就是把数组转换成一个字符串了,主要使用与在于此了,但是他转换过来的字符串会有一定的规则的,如果中间有分切符的,下面我来介绍implode()函数用法。

官方法介绍

implode(separator,array)

implode( )函数返回一个字符串的内容阵列。 implode — Join array elements with a string

 代码如下 复制代码


<?php
$arr = array('您好','百度!','美丽','一日!');echo implode(" ",$arr);
?>

输出.

您好 百度! 美丽 一日!


这样我就看出一implode用法了,它其实就这么简单哦。

[!--infotagslink--]

相关文章

  • C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • 怎么限制Apache日志文件大小(error.log、access.log)

    如何删除error.log、access.log文件以及限制Apache日志文件大小的方法介绍,Apache服务器下access.log以及error.log日志文件一直没有没有动过,今天wordpress 的MYSQL数据库连...2016-01-28
  • C++获取文件大小的4种常见技巧分享

    这篇文章主要介绍了C++获取文件大小的4种常见技巧分享,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • 详解php常用数组函数实例

    这篇文章介绍了php中常用的数组与函数,非常具有价值,有兴趣的同学可以参考一下 本文实例总结了php常用数组函数。分享给大家供大家参考,具体如下: 1. array array_mer...2016-12-31
  • IIS 7 中设置文件上传大小限制设置方法

    有时候我们需要限制上传文件的大小,那么可以参考下面的方法...2016-01-27
  • PHP编程常用技巧四则

    PHP编程常用技巧四则:   1.配置PHP文件目录   作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的httpd.conj...2016-11-25
  • 常用的css hack简单写法与兼容性介绍

    本文章来收藏了大量的关于在css中hack的用法及在不同浏览器下hack语法写法,有需要了解的朋友可参考一下。 区别不同浏览器的CSS hack写法: 区别IE6与FF: b...2017-07-06
  • C#开发中经常用的加密解密方法示例

    这篇文章主要给大家介绍了关于C#开发中经常用的加密解密方法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • 从零开始的html教程之CSS篇(3):常用的字体与文本属性

    一聚教程网 从零开始的html教程之CSS篇(2),介绍了css中常用的文字文本属性。这系列教程讲解CSS叠层样式表的知识,希望大家喜欢! 一、css常用的字体属性 1.字体的设置...2017-01-22
  • 超级详细实用的pycharm常用快捷键

    本文详细总结了Pycharm的常用快捷键,下文介绍使用方法和场景, 并不需要记忆这些快捷键, 你只需要知道有这些快捷键, 再需要用的时候查看一下, 用的多了自然也就记住了,需要的朋友可以参考下...2021-05-13
  • php 常用数组操作函数

    <?php array_values() //返回数组中所有元素 array_walk() //使用自定义函数遍历数组都一个单元 arsort(); //保留数组下标于值的关系进行倒序排列 asort() //保留...2016-11-25
  • php常用数据函数

    PHP的功能描述 ABS装置( )返回绝对值的第3号 acos ( )返回arccosine的第3号 acosh ( )返回逆双曲余弦的4号 阿辛( )返回反正弦的第3号 asinh ( )返回逆双曲正弦的4号...2016-11-25
  • php ckeditor上传图片文件大小限制修改

    ckeditor编辑器在上传图片或文件时是没有大小限制的,下面我们来给大家介绍两种ckeditor上传图片文件大小限制问题解决办法。 一种可以通过修改PHP.INI配置文件上传...2016-11-25
  • photoshop三个日系常用调色技巧心得

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说三个日系常用调色的技巧心得,各位想知道具体调色技巧的使用者们,那么大家就快来跟着来看一下吧。 ...2016-10-10
  • asp.net FileUpload控件实现文件格式判断与文件大小限制

    这篇文章主要介绍了有关asp.net fileupload控件判断文件格式,以及进行文件大小限制的方法,可以在web.config中配置,也可以在.cs文件中实现,需要的朋友参考下...2021-09-22
  • php实现远程文件下载代码

    这里为各位提供一款远程文件下载代码,我们可以把远程的文件用php下载到本地指定的目录,希望文章对你有帮助。 代码如下 复制代码 class downl...2016-11-25
  • php中常用hash加密函数

    */ $hash_list=hash_algos(); //返回注册的hash规则列表 print_r($hash_list); //显示结果 /*创建文件以计算哈希值*/ file_put_contents('example....2016-11-25
  • PHP执行系统命令的有几个常用的函数

    PHP执行系统命令的有几个常用的函数,如有:system函数、exec函数、popen函数,passthru,shell_exec函数他们都可以执行系统命令,不过前提时必须系统给了权限了哦。 s...2016-11-25
  • php常用函数之strip_tags函数用法

    strip_tags函数是过滤字符串中的html标签了,今天我们一起来看看这strip_tags函数的具体使用方法了,希望例子能够对各位有用。 A,定义和用法 strip_tags() 函数去除...2016-11-25
  • Web.Config文件配置之限制上传文件大小和时间的属性配置

    在Web.Config文件中配置限制上传文件大小与时间字符串时,是在httpRuntime httpRuntime节中完成的,需要设置以下2个属性:maxRequestLength属性与ExecutionTimeout属性,感兴趣的朋友可以了解下,或许对你有所帮助...2021-09-22