本文整理汇总了PHP中FileBackend::getRootStoragePath方法的典型用法代码示例。如果您正苦于以下问题:PHP FileBackend::getRootStoragePath方法的具体用法?PHP FileBackend::getRootStoragePath怎么用?PHP FileBackend::getRootStoragePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileBackend
的用法示例。
在下文中一共展示了FileBackend::getRootStoragePath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: delFileBatch
/**
* @param array $dstPathsRel
* @param string $backendRel
* @param FileBackend $dst
* @return void
*/
protected function delFileBatch(
array $dstPathsRel, $backendRel, FileBackend $dst
) {
$ops = array();
$deletedRel = array(); // for output message
$wikiId = $dst->getWikiId();
// Determine what files need to be copied over...
foreach ( $dstPathsRel as $dstPathRel ) {
$dstPath = $dst->getRootStoragePath() . "/$backendRel/$dstPathRel";
$ops[] = array( 'op' => 'delete', 'src' => $dstPath );
$deletedRel[] = $dstPathRel;
}
// Delete the batch of source files...
$t_start = microtime( true );
$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
if ( !$status->isOK() ) {
sleep( 10 ); // wait and retry copy again
$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
}
$ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
if ( !$status->isOK() ) {
$this->error( print_r( $status->getErrorsArray(), true ) );
$this->error( "$wikiId: Could not delete file batch.", 1 ); // die
} elseif ( count( $deletedRel ) ) {
$this->output( "\n\tDeleted these file(s) [{$ellapsed_ms}ms]:\n\t" .
implode( "\n\t", $deletedRel ) . "\n\n" );
}
}
示例2: copyFileBatch
protected function copyFileBatch(array $srcPathsRel, $backendRel, FileBackend $src, FileBackend $dst)
{
$ops = array();
$fsFiles = array();
$copiedRel = array();
// for output message
$wikiId = $src->getWikiId();
// Download the batch of source files into backend cache...
if ($this->hasOption('missingonly')) {
$srcPaths = array();
foreach ($srcPathsRel as $srcPathRel) {
$srcPaths[] = $src->getRootStoragePath() . "/{$backendRel}/{$srcPathRel}";
}
$t_start = microtime(true);
$fsFiles = $src->getLocalReferenceMulti(array('srcs' => $srcPaths, 'latest' => 1));
$ellapsed_ms = floor((microtime(true) - $t_start) * 1000);
$this->output("\nDownloaded these file(s) [{$ellapsed_ms}ms]:\n" . implode("\n", $srcPaths) . "\n\n");
}
// Determine what files need to be copied over...
foreach ($srcPathsRel as $srcPathRel) {
$srcPath = $src->getRootStoragePath() . "/{$backendRel}/{$srcPathRel}";
$dstPath = $dst->getRootStoragePath() . "/{$backendRel}/{$srcPathRel}";
if ($this->hasOption('utf8only') && !mb_check_encoding($srcPath, 'UTF-8')) {
$this->error("{$wikiId}: Detected illegal (non-UTF8) path for {$srcPath}.");
continue;
} elseif (!$this->hasOption('missingonly') && $this->filesAreSame($src, $dst, $srcPath, $dstPath)) {
$this->output("Already have {$srcPathRel}.\n");
continue;
// assume already copied...
}
$fsFile = array_key_exists($srcPath, $fsFiles) ? $fsFiles[$srcPath] : $src->getLocalReference(array('src' => $srcPath, 'latest' => 1));
if (!$fsFile) {
$src->clearCache(array($srcPath));
if ($src->fileExists(array('src' => $srcPath, 'latest' => 1)) === false) {
$this->error("{$wikiId}: File '{$srcPath}' was listed but does not exist.");
} else {
$this->error("{$wikiId}: Could not get local copy of {$srcPath}.");
}
continue;
} elseif (!$fsFile->exists()) {
// FSFileBackends just return the path for getLocalReference() and paths with
// illegal slashes may get normalized to a different path. This can cause the
// local reference to not exist...skip these broken files.
$this->error("{$wikiId}: Detected possible illegal path for {$srcPath}.");
continue;
}
$fsFiles[] = $fsFile;
// keep TempFSFile objects alive as needed
// Note: prepare() is usually fast for key/value backends
$status = $dst->prepare(array('dir' => dirname($dstPath), 'bypassReadOnly' => 1));
if (!$status->isOK()) {
$this->error(print_r($status->getErrorsArray(), true));
$this->error("{$wikiId}: Could not copy {$srcPath} to {$dstPath}.", 1);
// die
}
$ops[] = array('op' => 'store', 'src' => $fsFile->getPath(), 'dst' => $dstPath, 'overwrite' => 1);
$copiedRel[] = $srcPathRel;
}
// Copy in the batch of source files...
$t_start = microtime(true);
$status = $dst->doQuickOperations($ops, array('bypassReadOnly' => 1));
if (!$status->isOK()) {
sleep(10);
// wait and retry copy again
$status = $dst->doQuickOperations($ops, array('bypassReadOnly' => 1));
}
$ellapsed_ms = floor((microtime(true) - $t_start) * 1000);
if (!$status->isOK()) {
$this->error(print_r($status->getErrorsArray(), true));
$this->error("{$wikiId}: Could not copy file batch.", 1);
// die
} elseif (count($copiedRel)) {
$this->output("\nCopied these file(s) [{$ellapsed_ms}ms]:\n" . implode("\n", $copiedRel) . "\n\n");
}
}