suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Linux – PHP-Methode zum Dekomprimieren des .gz-Dateiformats.

  1. Jetzt habe ich die .gz-Datei des Projekts über die URL erhalten

  2. Ich möchte den Inhalt dekomprimierter komprimierter Dateien verarbeiten

  3. Jetzt kenne ich eine Möglichkeit, nämlich PHP zu verwenden, um den Linux-Systembefehl tar aufzurufen, um die Daten zu dekomprimieren und dann zu verarbeiten

Ich würde gerne Freunde fragen, ob sie sich schon einmal damit befasst haben. Es kann mit der PHP-Funktion erledigt werden!

Dies ist mein erster Kontakt, bitte geben Sie mir einen Rat!

黄舟黄舟2717 Tage vor961

Antworte allen(2)Ich werde antworten

  • 仅有的幸福

    仅有的幸福2017-06-08 11:03:56

    php原声支持,以下来自SO

    // This input should be from somewhere else, hard-coded in this example
    $file_name = 'file.txt.gz';
    
    // Raising this value may increase performance
    $buffer_size = 4096; // read 4kb at a time
    $out_file_name = str_replace('.gz', '', $file_name);
    
    // Open our files (in binary mode)
    $file = gzopen($file_name, 'rb');
    $out_file = fopen($out_file_name, 'wb');
    
    // Keep repeating until the end of the input file
    while(!gzeof($file)) {
        // Read buffer-size bytes
        // Both fwrite and gzread and binary-safe
        fwrite($out_file, gzread($file, $buffer_size));
    }
    
    // Files are done, close files
    fclose($out_file);
    gzclose($file);

    Antwort
    0
  • 学习ing

    学习ing2017-06-08 11:03:56

    一般php安装都自带tar的扩展包,这是我项目中tar的解压函数,仅供参考

    function get_files_name_in_tar($file) {
        require_once 'Archive/Tar.php';
        $ext = get_file_extension($file);
        $tar_handle = null;
        if ($ext === "bz2") {
            $tar_handle = new Archive_Tar($file, "bz2");
        } else if ($ext === "gz") {
            $tar_handle = new Archive_Tar($file, "gz");
        } else if ($ext === "tar") {
            $tar_handle = new Archive_Tar($file);
        } else {
            return false;
        }    
        if (!$tar_handle) {
            return false;
        }    
        $entry_names = $tar_handle->listContent();
    
        return array_column($entry_names, 'filename');
    }

    另外可参考:PHP tar格式解压的三种方式
    还可以通过linux,在php中调用linux命令tar然后exec执行

    Antwort
    0
  • StornierenAntwort