1. <?php
  2. /*
  3. 函数:remote_file_exists
  4. 功能:判断远程文件是否存在
  5. 参数: $url_file -远程文件URL
  6. 返回:存在返回true,不存在或者其他原因返回false
  7. */
  8. function remote_file_exists($url_file){
  9. //检测输入
  10. $url_file = trim($url_file);
  11. if (empty($url_file)) { return false; }
  12. $url_arr = parse_url($url_file);
  13. if (!is_array($url_arr) || empty($url_arr)){return false; }
  14.  
  15. //获取请求数据
  16. $host = $url_arr['host'];
  17. $path = $url_arr['path'] ."?".$url_arr['query'];
  18. $port = isset($url_arr['port']) ?$url_arr['port'] : "80";
  19.  
  20. //连接服务器
  21. $fp = fsockopen($host, $port, $err_no, $err_str,30);
  22. if (!$fp){ return false; }
  23.  
  24. //构造请求协议
  25. $request_str = "GET ".$path."HTTP/1.1";
  26. $request_str .= "Host:".$host."";
  27. $request_str .= "Connection:Close";
  28.  
  29. //发送请求
  30. fwrite($fp,$request_str);
  31. $first_header = fgets($fp, 1024);
  32. fclose($fp);
  33.  
  34. //判断文件是否存在
  35. if (trim($first_header) == ""){ return false;}
  36. if (!preg_match("/200/", $first_header)){
  37. return false;
  38. }
  39.  
  40. return true;
  41. }
  42. ?>

函数描述及例子

  1. <?
  2. //测试代码
  3. $str_url = 'http://127.0.0.2/viewarticle.php?id=119617';
  4. $exits = remote_file_exists($str_url);
  5. echo $exists ? "Exists" : "Not exists";
  6. ?>

方法一(需要开启allow_url_fopen):

  1. <?php
  2. $url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
  3. $fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false;
  4. echo $fileExists; //返回1,就说明文件存在。
  5. ?>

方法二(需要服务器支持Curl组件):

  1. <?php
  2. function check_remote_file_exists($url) {
  3. $curl = curl_init($url); // 不取回数据
  4. curl_setopt($curl, CURLOPT_NOBODY, true);
  5. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
  6. $result = curl_exec($curl);
  7. $found = false; // 如果请求没有发送失败
  8. if ($result !== false) {
  9.  
  10. /** 再检查http响应码是否为200 */
  11. $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  12. if ($statusCode == 200) {
  13. $found = true;
  14. }
  15. }
  16. curl_close($curl);
  17.  
  18. return $found;
  19. }
  20.  
  21. $url = "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
  22. echo check_remote_file_exists($url); // 返回1,说明存在。
  23.  
  24. ?>

PHP判断远程文件是否存在的更多相关文章

  1. php如何判断远程文件是否存在

    <?php /*   函数:remote_file_exists   功能:判断远程文件是否存在   参数: $url_file -远程文件URL   返回:存在返回true,不存在或者其他原因 ...

  2. PHP判断远程文件是否存在的几种方法

    在做一个图片预览中图的东西,遇到一个问题,就是要判断远程文件是否存在(不是同一台服务器). 代码如下: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 ...

  3. C# 判断远程文件是否存在

    /// <summary> /// 判断远程文件是否存在 /// </summary> /// <param name="url">url地址& ...

  4. [PHP学习教程 - 文件]002.判断远程文件是否存在(Remote File Exists)

    引言:项目过程当中碰到了类似流程这样的需求,对服务器上的文件进行依次操作,如:检查文件格式->检查文件是否有更新->处理更新->同步其他服务器等等 如果需求的操作是依赖于远程文件是否 ...

  5. PHP判断远程图片或文件是否存在

    PHP判断远程图片是否存在,此方法同样适用于判断远程文件是否存在,这是一种既然有效率且又准确的方法,建议采用此方法,以往使用get_headers()方法判断都是有问题的: function chec ...

  6. WPF下载远程文件,并显示进度条和百分比

    WPF下载远程文件,并显示进度条和百分比 1.xaml <ProgressBar HorizontalAlignment="Left" Height="10&quo ...

  7. shell实践(一)---判断远程服务器中文件是否存在

    1.判断一个文件的常见形式为 if [ -f filename ]  #此处有-e和-f的区别 注意: 1)中括号之间的空格: 2)filename最好是绝对路径,在判断远程服务器中文件是否存在时尤为 ...

  8. php如何判断文件是否存在,包括本地和远程文件

    当检查的文件是本地时用PHP自带的file_exists检查就行了,而此函数只能检查本地的函数是否存在, 所以如果要检查远程的文件是否存在只能用其它的方法了. 如果所服务器中php的配置开启了“all ...

  9. Python: 如何判断远程服务器上Excel文件是否被人打开

    最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件. 开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明 ...

随机推荐

  1. 洛谷P1288 取数游戏II[博弈论]

    题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...

  2. 安装交叉编译的 GCC 时出现的错误

    错误如下: ../.././libgcc/../config-ml.: enable_libstdc++_v3=yes: command not found make[]: Entering dire ...

  3. 激活windows7 企业版小记

    问题:状态不可用 1)控制面板->管理工具->服务,启动SPP Notification Service和Software Protection两项服务后 重启计算机,仍然提示状态不可用. ...

  4. PHP开发环境搭建

    链接: Q&A1.Mac下的PHP环境搭建 Mac 下如何搭建 PHP 开发环境? [PHP] Mac下homebrew安装及php.mysql.nginx环境安装及配置个人PHP开发环境的选 ...

  5. 服务器一般达到多少qps比较好[转]

    你好,每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量. 原理:每天80%的访问集中在20%的时间里,这2 ...

  6. CSS背景图像位置属性background-position百分比详解

    百分比值同关键字很接近,但其操作方式不一样.用百分比值来居中一幅背景图像,也很简单: body { background-image;url(beijing.gif); background-repe ...

  7. JS组件系列——开源免费图表组件:Chart.js

    前言:最近被开源免费得有点上火了,各种组件首先想到的就是是开源否.是否免费.是否和bootstrap风格一致.想着以后做报表肯定要用到图表组件的,于是在Bootstrap中文网上面找到了Chart.j ...

  8. @Autowired的使用

    1.benas的xml文件中需要加入如下代码 <bean class="org.springframework.beans.factory.annotation.AutowiredAn ...

  9. Asp.Net MVC<五>:过滤器

    ControllerActionInvoker在执行过程中除了利用ActionDescriptor完成对目标Action方法本身的执行外,还会执行相关过滤器(Filter).过滤器采用AOP的设计,它 ...

  10. 读取本地外网IP地址

    读取本地外网IP地址. 根据启动并运行的网卡名称,找到本机实际的IP地址(已知当前运行的无线网卡名包含某一个字符) import java.net.InterfaceAddress; import j ...