X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FcleanupUploadStash.php;h=24b63a8bab9ec8fce9050fc325f02548e1d53d55;hb=336a92c1a1e6184f853c68df4647d3e3ff2aa54f;hp=d8bfd98644b5dfe63bc1cd69ede17c75ca9045c3;hpb=513387d6ac7206f5e91e9520360fdb2e85c364d2;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/cleanupUploadStash.php b/maintenance/cleanupUploadStash.php index d8bfd98644..24b63a8bab 100644 --- a/maintenance/cleanupUploadStash.php +++ b/maintenance/cleanupUploadStash.php @@ -38,6 +38,7 @@ class UploadStashCleanup extends Maintenance { public function __construct() { parent::__construct(); $this->mDescription = "Clean up abandoned files in temporary uploaded file stash"; + $this->setBatchSize( 50 ); } public function execute() { @@ -97,17 +98,22 @@ class UploadStashCleanup extends Maintenance { $iterator = $tempRepo->getBackend()->getFileList( array( 'dir' => $dir, 'adviseStat' => 1 ) ); $this->output( "Deleting old thumbnails...\n" ); $i = 0; + $batch = array(); // operation batch foreach ( $iterator as $file ) { if ( wfTimestamp( TS_UNIX, $tempRepo->getFileTimestamp( "$dir/$file" ) ) < $cutoff ) { - $status = $tempRepo->quickPurge( "$dir/$file" ); - if ( !$status->isOK() ) { - $this->error( print_r( $status->getErrorsArray(), true ) ); - } - if ( ( ++$i % 100 ) == 0 ) { + $batch[] = array( 'op' => 'delete', 'src' => "$dir/$file" ); + if ( count( $batch ) >= $this->mBatchSize ) { + $this->doOperations( $tempRepo, $batch ); + $i += count( $batch ); + $batch = array(); $this->output( "$i\n" ); } } } + if ( count( $batch ) ) { + $this->doOperations( $tempRepo, $batch ); + $i += count( $batch ); + } $this->output( "$i done\n" ); // Apparently lots of stash files are not registered in the DB... @@ -118,19 +124,31 @@ class UploadStashCleanup extends Maintenance { $this->error( "Temp repo is not using the temp container.", 1 ); // die } $i = 0; + $batch = array(); // operation batch foreach ( $iterator as $file ) { if ( wfTimestamp( TS_UNIX, $tempRepo->getFileTimestamp( "$dir/$file" ) ) < $cutoff ) { - $status = $tempRepo->quickPurge( "$dir/$file" ); - if ( !$status->isOK() ) { - $this->error( print_r( $status->getErrorsArray(), true ) ); - } - if ( ( ++$i % 100 ) == 0 ) { + $batch[] = array( 'op' => 'delete', 'src' => "$dir/$file" ); + if ( count( $batch ) >= $this->mBatchSize ) { + $this->doOperations( $tempRepo, $batch ); + $i += count( $batch ); + $batch = array(); $this->output( "$i\n" ); } } } + if ( count( $batch ) ) { + $this->doOperations( $tempRepo, $batch ); + $i += count( $batch ); + } $this->output( "$i done\n" ); } + + protected function doOperations( FileRepo $tempRepo, array $ops ) { + $status = $tempRepo->getBackend()->doQuickOperations( $ops ); + if ( !$status->isOK() ) { + $this->error( print_r( $status->getErrorsArray(), true ) ); + } + } } $maintClass = "UploadStashCleanup";