zoukankan      html  css  js  c++  java
  • php下载文件,解压文件,读取并写入新文件

    以下代码都是本人在工作中遇到的问题,并完成的具体代码和注释,不多说,直接上代码:

    <?php
         //组织链接
         $dataurl = "http://118.194.236.54:888/kw/";
         $date = date("Y-m-d",strtotime("-1 day"));
         $fileName = $date . ".tar.gz";
         $dataurl = $dataurl . $fileName;
    
         //下载昨天数据,如果curl方法可用,默认使用curl方法!
         function httpcopy($url, $file="", $timeout=60)
         {
             $file = empty($file) ? pathinfo($url, PATHINFO_BASENAME) : $file;
             $dir = pathinfo($file, PATHINFO_DIRNAME);
             !is_dir($dir) && @mkdir($dir, 0755, true);
             $url = str_replace(" ", "%20", $url);
    
             if(function_exists('curl_init')) {
                 $ch = curl_init();
                 curl_setopt($ch, CURLOPT_URL, $url);
                 curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                 $temp = curl_exec($ch);
                 if(@file_put_contents($file, $temp) && !curl_error($ch)) {
                     return $file;
                 } else {
                     return false;
                 }
             } else {
                 $opts = array(
                     "http" => array(
                     "method" => "GET",
                     "header" => "",
                     "timeout" => $timeout)
                 );
                 $context = stream_context_create($opts);
                 if(@copy($url, $file, $context)) {
                     return $file;
                 } else {
                     return false;
                 }
             }
         }
    
         if(!httpcopy($dataurl, "./" . $fileName, 60)) {
              echo "下载出错!";
         }
    
         //解压tar.gz文件
         $phar = new PharData($fileName);
         $phar->extractTo('./', null, true);
    
    
         //读取解压后的文件数据
         $handle = fopen($date . ".txt", "r");
        
         $text = '';
         while (!feof($handle)) {
             $buffer = fgets($handle);
             $res = explode("\t", $buffer);
             $text .= $res[1] . ' ';
         }
         fclose($handle);
    
         //写入关键字文件
         $name = $date . "keyword.txt";
         $fp = fopen($name, "w+");
         fwrite($fp, $text);
         fclose($fp);
        
    ?>
  • 相关阅读:
    lerna管理前端packages的最佳实践
    理解Python闭包,这应该是最好的例子
    Maven 初学+http://mvnrepository.com/
    逆向工程,调试Hello World !程序(更新中)
    github设置仓库可见性 私人仓库设置他人协作/可见
    flink 1.9.0 编译:flink-fs-hadoop-shaded 找不到
    中通消息平台 Kafka 顺序消费线程模型的实践与优化
    以友盟+U-Push为例,深度解读消息推送的筛选架构解决方案应用与实践
    idea新建spring boot项目使用maven引入依赖失败,pom.xml文件中project标签报错
    RabbitMQ (十二) 消息确认机制
  • 原文地址:https://www.cnblogs.com/xjser/p/4962901.html
Copyright © 2011-2022 走看看