Announcement

Collapse
No announcement yet.

[Hỏi] Tại sao exec md5sum lại check md5 sha1 lại nhanh vậy?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [PHP] [Hỏi] Tại sao exec md5sum lại check md5 sha1 lại nhanh vậy?

    Tại sao exec md5sum lại check md5 sha1 lại nhanh vậy?
    các bác bác nào biết giải thích giúp em phát, hihi.
    trên cùng một host, máy chủ thì exec luôn cho kết quả nhanh hơn hash_file, md5_file dù file có 2GB đi nữa.
    file lớn hơn em chưa thử :dribble:
    :aboom:

  • #2
    Originally posted by 12520381 View Post
    Tại sao exec md5sum lại check md5 sha1 lại nhanh vậy?
    các bác bác nào biết giải thích giúp em phát, hihi.
    trên cùng một host, máy chủ thì exec luôn cho kết quả nhanh hơn hash_file, md5_file dù file có 2GB đi nữa.
    file lớn hơn em chưa thử :dribble:
    Một cái hàm của PHP dĩ nhiên không thể chạy nhanh bằng một chương trình nằm trong gói gnu coreutils vốn được kỹ lưỡng viết bằng C chuẩn và asembly để tận dụng tối đa tài nguyên hệ thống.

    Comment


    • #3
      Originally posted by sinhvien.uit View Post
      Một cái hàm của PHP dĩ nhiên không thể chạy nhanh bằng một chương trình nằm trong gói gnu coreutils vốn được kỹ lưỡng viết bằng C chuẩn và asembly để tận dụng tối đa tài nguyên hệ thống.
      ah, cảm ơn anh
      anh cho em hỏi thêm là sao tên file có space or chứa nhiều nhiều ký tự đặc biệt xíu thì nó check không được? ps:
      :aboom:

      Comment


      • #4
        Originally posted by 12520381 View Post
        ah, cảm ơn anh
        anh cho em hỏi thêm là sao tên file có space or chứa nhiều nhiều ký tự đặc biệt xíu thì nó check không được? ps:
        Vì em đã làm sai cái gì đó :lol:

        Nói chi tiết hơn thì exec gọi thực thi một chương trình khác nên em học cách xài chương trình đó trước khi gọi exec đi

        Comment


        • #5
          Originally posted by sinhvien.uit View Post
          Vì em đã làm sai cái gì đó :lol:

          Nói chi tiết hơn thì exec gọi thực thi một chương trình khác nên em học cách xài chương trình đó trước khi gọi exec đi
          PHP Code:
          public function getFileHash($filePath) {

                  
          // Placeholder array
                  
          $hashArray = array();

                  
          // Verify file path exists and is a directory
                  
          if (!file_exists($filePath)) {
                      return 
          json_encode($hashArray);
                  }

                  
          // Prevent access to hidden files
                  
          if ($this->_isHidden($filePath)) {
                      return 
          json_encode($hashArray);
                  }

                  
          // Prevent access to parent folders
                  
          if (strpos($filePath'<') !== false || strpos($filePath'>') !== false
                  
          || strpos($filePath'..') !== false || strpos($filePath'/') === 0) {
                      return 
          json_encode($hashArray);
                  }

                  
          // Prevent hashing if file is too big
                  
          if (filesize($filePath) > $this->_config['hash_size_limit']) {

                      
          // Notify user that file is too large
                      
          $hashArray['md5'] = '[ File size exceeds threshold ]';
                      
          $hashArray['sha1'] = '[ File size exceeds threshold ]';

                  } else {

                      
          // Generate file hashes
                   
          $hashArray['md5']  = exec("md5sum $filePath"$hashArray);
                   
          $hashArray['sha1'] = exec("sha1sum $filePath"$hashArray);
                  }

                  
          // Return the data
                  
          return $hashArray;

              } 
          trong code của https://github.com/DirectoryLister/D...toryLister.php
          em chuyển từ hash_file sang dùng exec
          theo anh thì nó sai cái gì ở đây ps:
          :aboom:

          Comment


          • #6
            Originally posted by 12520381 View Post
            PHP Code:
            public function getFileHash($filePath) {

                    
            // Placeholder array
                    
            $hashArray = array();

                    
            // Verify file path exists and is a directory
                    
            if (!file_exists($filePath)) {
                        return 
            json_encode($hashArray);
                    }

                    
            // Prevent access to hidden files
                    
            if ($this->_isHidden($filePath)) {
                        return 
            json_encode($hashArray);
                    }

                    
            // Prevent access to parent folders
                    
            if (strpos($filePath'<') !== false || strpos($filePath'>') !== false
                    
            || strpos($filePath'..') !== false || strpos($filePath'/') === 0) {
                        return 
            json_encode($hashArray);
                    }

                    
            // Prevent hashing if file is too big
                    
            if (filesize($filePath) > $this->_config['hash_size_limit']) {

                        
            // Notify user that file is too large
                        
            $hashArray['md5'] = '[ File size exceeds threshold ]';
                        
            $hashArray['sha1'] = '[ File size exceeds threshold ]';

                    } else {

                        
            // Generate file hashes
                     
            $hashArray['md5']  = exec("md5sum $filePath"$hashArray);
                     
            $hashArray['sha1'] = exec("sha1sum $filePath"$hashArray);
                    }

                    
            // Return the data
                    
            return $hashArray;

                } 
            trong code của https://github.com/DirectoryLister/D...toryLister.php
            em chuyển từ hash_file sang dùng exec
            theo anh thì nó sai cái gì ở đây ps:
            Muốn dùng exec như trên thì phải nhập full path. Chứ còn để file cùng chỗ với file.php xong gọi md5sum file thì nó sẽ báo lỗi tìm không thấy file.

            Comment

            LHQC

            Collapse
            Working...
            X