List of current updates: $file, 'adler32' => trim($splitted[1]), 'filesize' => filesize($file)); $update_file_maxlen = max($update_file_maxlen, strlen($file)); $uncompressed_size = 0; $entries = array(); $zip = zip_open($file); if ($zip) { while ($zip_entry = zip_read($zip)) { $uncompressed_size = $uncompressed_size + zip_entry_filesize($zip_entry); $entries[zip_entry_name($zip_entry)] = array( 'name' => zip_entry_name($zip_entry), 'size' => zip_entry_compressedsize($zip_entry)); } zip_close($zip); } $update['entries'] = $entries; $update['uncompressed_size'] = $uncompressed_size; $updates[] = $update; $data_size += $update['filesize']; $data_uncompressed_size += $uncompressed_size; } function get_update_for_file($file) { global $updates; for ($i = count($updates) - 1; $i >= 0; $i--) { $update = $updates[$i]; if (array_key_exists($file, $update['entries'])) { return $update; } } return null; } foreach ($updates as &$update) { $entry_count = count($update['entries']); $used_entry_count = 0; $used_entry_size = 0; foreach ($update['entries'] as $file => $entry) { $update_for_file = get_update_for_file($file); if (strcmp($update_for_file['file'], $update['file']) == 0) { $used_entry_count++; $used_entry_size += $entry['size']; $entry['used'] = true; } } $update['used_entry_count'] = $used_entry_count; $update['used_size'] = $used_entry_size; $update['used_percentage'] = $used_entry_size / $update['filesize']; $data_used_size += $update['used_size']; } foreach ($updates as &$update) { echo $update['file']; echo str_repeat(' ', $update_file_maxlen - strlen($update['file']) + 2); echo $update['adler32']; printf(" %4d kb", $update['filesize'] / 1024); printf(" %4d kb", $update['uncompressed_size'] / 1024); printf(" %3d%% used (%d/%d files)", $update['used_percentage'] * 100, $update['used_entry_count'], count($update['entries'])); echo "\n"; } printf("\n"); printf("Amount of data: %4d kb\n", $data_size / 1024); printf("Uncompressed: %4d kb\n", $data_uncompressed_size / 1024); printf("Obsoleted data: %4d kb (%d%%)\n", ($data_size - $data_used_size) / 1024, ($data_used_size / $data_size) * 100); /* if ($dh = opendir('.')) { while (($file = readdir($dh)) !== false) { } closedir($dh); } */ ?>