HM\BackUpWordPress\Site_Size::recursive_filesize_scanner PHP Method

recursive_filesize_scanner() public method

Locks should be set by the caller with set_transient( 'hmbkp_directory_filesizes_running', true, HOUR_IN_SECONDS );
public recursive_filesize_scanner ( ) : array
return array $directory_sizes An array of directory paths => filesize sum of all files in directory
    public function recursive_filesize_scanner()
    {
        /**
         * Raise the `memory_limit` and `max_execution time`
         *
         * Respects the WP_MAX_MEMORY_LIMIT Constant and the `admin_memory_limit`
         * filter.
         */
        @ini_set('memory_limit', apply_filters('admin_memory_limit', WP_MAX_MEMORY_LIMIT));
        @set_time_limit(0);
        // Use the cached array directory sizes if available
        $directory_sizes = $this->get_cached_filesizes();
        // If we do have it in cache then let's use it and also clear the lock
        if (is_array($directory_sizes)) {
            delete_transient('hmbkp_directory_filesizes_running');
            return $directory_sizes;
        }
        // If we don't have it cached then we'll need to re-calculate
        $finder = new Finder();
        $finder->followLinks();
        $finder->ignoreDotFiles(false);
        $finder->ignoreUnreadableDirs(true);
        $files = $finder->in(Path::get_root());
        foreach ($files as $file) {
            if ($file->isReadable()) {
                $directory_sizes[wp_normalize_path($file->getRealpath())] = $file->getSize();
            } else {
                $directory_sizes[wp_normalize_path($file->getRealpath())] = 0;
            }
        }
        file_put_contents(PATH::get_path() . '/.files', gzcompress(json_encode($directory_sizes)));
        // Remove the lock
        delete_transient('hmbkp_directory_filesizes_running');
        return $directory_sizes;
    }