使用PHP获取网络文件的实现代码

复制代码 代码如下:

  <?php

  //设置我们将要使用的文件

  $srcurl = "http://localhost/index.php";

  $tempfilename = "tempindex.html";

  $targetfilename = "index.html";

  ?>

  <HTML>

  <HEAD>

  <TITLE>

  Generating <?php echo("$targetfilename"); ?>

  </TITLE>

  </HEAD>

  <BODY>

  <P>Generating <?php echo("$targetfilename"); ?>...</P>

  <?php

  //首先删除上次操作可能遗留下来的临时文件。

  //这个过程可能会提示错误,所以我们使用@以防止报错。

  @unlink($tempfilename);

  //通过一个URL的请求装入动态版本。

  //在我们接收到相关内容之前,Web服务器会对PHP进行处理

  //(因为本质上我们是在模拟一个Web浏览器),

  //所以我们将获得的是一个静态的HTML页面。

  //'r'指出我们只要求对这个“文件”进行读操作。

  $dynpage = fopen($srcurl, 'r');

  //处理错误

  if (!$dynpage) {

  echo("<P>Unable to load $srcurl. Static page ".

  "update aborted!</P>");

  exit();

  }

  //将这个URL的内容读入到一个PHP变量中。

  //指定我们将读取1MB的数据(超过这个数据量一般是意味着出错了)。

  $htmldata = fread($dynpage, 1024*1024);

  //当我们完成工作后,关闭到源“文件”的连接。

  fclose($dynpage);

  //打开临时文件(同时在这个过程中建立)以用来写入(注意'w'的用法).

  $tempfile = fopen($tempfilename, 'w');

  //处理错误

  if (!$tempfile) {

  echo("<P>Unable to open temporary file ".

  "($tempfilename) for writing. Static page ".

  "update aborted!</P>");

  exit();

  }

  //将静态页面的数据写入到临时文件中

  fwrite($tempfile, $htmldata);

  //完成写入后,关闭临时文件。

  fclose($tempfile);

  //如果到了这里,我们应该已经成功地写好了一个临时文件,

  //现在我们可以用它来覆盖原来的静态页面了。

  $ok = copy($tempfilename, $targetfilename);

  //最后删除这个临时文件。

  unlink($tempfilename);

  ?>

  <P>Static page successfully updated!</P>

  </BODY>

  </HTML>