コード例 #1
0
ファイル: FileRepo.php プロジェクト: nahoj/mediawiki_ynh
	/**
	 * Get the storage path corresponding to one of the zones
	 *
	 * @param $zone string
	 * @return string|null Returns null if the zone is not defined
	 */
	public function getZonePath( $zone ) {
		list( $container, $base ) = $this->getZoneLocation( $zone );
		if ( $container === null || $base === null ) {
			return null;
		}
		$backendName = $this->backend->getName();
		if ( $base != '' ) { // may not be set
			$base = "/{$base}";
		}
		return "mwstore://$backendName/{$container}{$base}";
	}
コード例 #2
0
 protected function doPerfTest(FileBackend $backend)
 {
     $ops1 = array();
     $ops2 = array();
     $ops3 = array();
     $ops4 = array();
     $ops5 = array();
     $baseDir = 'mwstore://' . $backend->getName() . '/testing-cont1';
     $backend->prepare(array('dir' => $baseDir));
     $dirname = $this->getOption('srcdir');
     $dir = opendir($dirname);
     if (!$dir) {
         return;
     }
     while ($dir && ($file = readdir($dir)) !== false) {
         if ($file[0] != '.') {
             $this->output("Using '{$dirname}/{$file}' in operations.\n");
             $dst = $baseDir . '/' . wfBaseName($file);
             $ops1[] = array('op' => 'store', 'src' => "{$dirname}/{$file}", 'dst' => $dst, 'overwrite' => 1);
             $ops2[] = array('op' => 'copy', 'src' => "{$dst}", 'dst' => "{$dst}-1", 'overwrite' => 1);
             $ops3[] = array('op' => 'move', 'src' => $dst, 'dst' => "{$dst}-2", 'overwrite' => 1);
             $ops4[] = array('op' => 'delete', 'src' => "{$dst}-1");
             $ops5[] = array('op' => 'delete', 'src' => "{$dst}-2");
         }
         if (count($ops1) >= $this->getOption('maxfiles', 20)) {
             break;
             // enough
         }
     }
     closedir($dir);
     $this->output("\n");
     $method = $this->hasOption('quick') ? 'doQuickOperations' : 'doOperations';
     $opts = array('force' => 1);
     if ($this->hasOption('parallelize')) {
         $opts['parallelize'] = $this->getOption('parallelize') === 'true';
     }
     $start = microtime(true);
     $status = $backend->{$method}($ops1, $opts);
     $e = (microtime(true) - $start) * 1000;
     if ($status->getErrorsArray()) {
         print_r($status->getErrorsArray());
         exit(0);
     }
     $this->output($backend->getName() . ": Stored " . count($ops1) . " files in {$e} ms.\n");
     $start = microtime(true);
     $backend->{$method}($ops2, $opts);
     $e = (microtime(true) - $start) * 1000;
     if ($status->getErrorsArray()) {
         print_r($status->getErrorsArray());
         exit(0);
     }
     $this->output($backend->getName() . ": Copied " . count($ops2) . " files in {$e} ms.\n");
     $start = microtime(true);
     $backend->{$method}($ops3, $opts);
     $e = (microtime(true) - $start) * 1000;
     if ($status->getErrorsArray()) {
         print_r($status->getErrorsArray());
         exit(0);
     }
     $this->output($backend->getName() . ": Moved " . count($ops3) . " files in {$e} ms.\n");
     $start = microtime(true);
     $backend->{$method}($ops4, $opts);
     $e = (microtime(true) - $start) * 1000;
     if ($status->getErrorsArray()) {
         print_r($status->getErrorsArray());
         exit(0);
     }
     $this->output($backend->getName() . ": Deleted " . count($ops4) . " files in {$e} ms.\n");
     $start = microtime(true);
     $backend->{$method}($ops5, $opts);
     $e = (microtime(true) - $start) * 1000;
     if ($status->getErrorsArray()) {
         print_r($status->getErrorsArray());
         exit(0);
     }
     $this->output($backend->getName() . ": Deleted " . count($ops5) . " files in {$e} ms.\n");
 }
コード例 #3
0
 /**
  * Substitute the backend name of storage paths with that of a given one
  *
  * @param array|string $paths List of paths or single string path
  * @param FileBackend $backend
  * @return array|string
  */
 protected function replaceNamePaths($paths, FileBackend $backend)
 {
     return preg_replace('!^mwstore://([^/]+)!', StringUtils::escapeRegexReplacement("mwstore://" . $backend->getName()), $paths);
 }