Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // perform filesystem aging by repetitive file creation and deletion.
- $generation_count = 2000;
- // file categories
- $q = array (
- 0 => array ( // small files
- 'size' => array (0, 16384),
- 'create' => array (0, 70),
- 'delete' => array (0, 69)
- ),
- 1 => array (
- 'size' => array (512*1024, 6*1024*1024),
- 'create' => array (1, 10),
- 'delete' => array (1, 9)
- ),
- 2 => array ( // large files, videos
- 'size' => array (500*1024*1024, 700*1024*1024),
- 'create' => array (0, 1),
- 'delete' => array (0, 1)
- )
- );
- $buffer = "a";
- for ($k = 0; $k < 20; $k ++) $buffer .= $buffer; // $buffer is now 1 MiB
- $filenames = array();
- for ($k = 0; $k < count ($q); $k ++) $filenames[$k] = array();
- $flag_ran_out_of_space = 0;
- for ($generation = 0; $generation < $generation_count; $generation ++) {
- echo "generation ".sprintf("%4d", $generation)."\n";
- // creating files
- for ($type = 0; $type < count ($q); $type ++) {
- $count = rand ($q[$type]['create'][0], $q[$type]['create'][1]);
- $count = max ($count, 0);
- echo " creating $count files of type $type ";
- for ($k = 0; $k < $count; $k ++) {
- $name = tempnam (".", "aging${type}_");
- $size = rand ($q[$type]['size'][0], $q[$type]['size'][1]);
- $fp = fopen ($name, "wb");
- $written = 0;
- while ($size > 0) {
- $block_size = min ($size, 1024*1024);
- $written = fwrite ($fp, $buffer, $block_size);
- $size = $size - $written;
- if (0 == $written) break;
- }
- fclose ($fp);
- $filenames[$type][] = $name;
- if (0 == $written) {
- $flag_ran_out_of_space = 1;
- echo "no space left."; break;
- }
- echo ".";
- }
- echo "\n";
- }
- // on first generation do not delete files
- if (0 == $generation) continue;
- // deleting files
- for ($type = 0; $type < count($q); $type ++) {
- $count = rand ($q[$type]['delete'][0], $q[$type]['delete'][1]);
- $count = max ($count, 0);
- echo " deleting $count files of type $type ";
- for ($k = 0; $k < $count; $k ++) {
- if (count ($filenames[$type]) > 0) {
- $key = array_rand ($filenames[$type]);
- unlink ($filenames[$type][$key]);
- unset ($filenames[$type][$key]);
- echo ".";
- }
- }
- echo "\n";
- }
- }
- if ($flag_ran_out_of_space) {
- echo "Warning: there was time when no space was left.\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment