Reduced memory usage a bit for copyFileBackend.php with --missingonly.

Change-Id: Iae650b5c3a5f99c5b2e31e29c276957ea6b8bb50
This commit is contained in:
Aaron Schulz 2013-04-30 18:42:03 -07:00
parent 4607c38b25
commit f8af77dd9d

View file

@ -79,24 +79,28 @@ class CopyFileBackend extends Maintenance {
// Do a listing comparison if specified
if ( $this->hasOption( 'missingonly' ) ) {
$relFilesSrc = array();
$relFilesDst = array();
foreach ( $srcPathsRel as $srcPathRel ) {
$relFilesSrc[] = $srcPathRel;
}
$dstPathsRel = $dst->getFileList( array(
'dir' => $dst->getRootStoragePath() . "/$backendRel" ) );
if ( $dstPathsRel === null ) {
$this->error( "Could not list files in $container.", 1 ); // die
}
// Get the list of destination files
$relFilesDstSha1 = array();
foreach ( $dstPathsRel as $dstPathRel ) {
$relFilesDst[] = $dstPathRel;
$relFilesDstSha1[sha1( $dstPathRel )] = 1;
}
unset( $dstPathsRel ); // free
// Get the list of missing files
$missingPathsRel = array();
foreach ( $srcPathsRel as $srcPathRel ) {
if ( !isset( $relFilesDstSha1[sha1( $srcPathRel )] ) ) {
$missingPathsRel[] = $srcPathRel;
}
}
unset( $srcPathsRel ); // free
// Only copy the missing files over in the next loop
$srcPathsRel = array_diff( $relFilesSrc, $relFilesDst );
$srcPathsRel = $missingPathsRel;
$this->output( count( $srcPathsRel ) . " file(s) need to be copied.\n" );
unset( $relFilesSrc );
unset( $relFilesDst );
}
$batchPaths = array();