From 9fdf363fe14283088134797ba5e90fb5d1c55390 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 18 Dec 2007 16:19:53 +0000 Subject: Added initial version of the update analysis tool upalyzer. --- tools/upalyzer/analyze.php | 131 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 tools/upalyzer/analyze.php (limited to 'tools') diff --git a/tools/upalyzer/analyze.php b/tools/upalyzer/analyze.php new file mode 100644 index 00000000..71ed51a5 --- /dev/null +++ b/tools/upalyzer/analyze.php @@ -0,0 +1,131 @@ + + +Update analysis + +
+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);
+}
+*/
+?>
+
+ + -- cgit v1.2.3-70-g09d2