MediaWiki
REL1_20
|
Base class for all backends using particular storage medium. More...
Public Member Functions | |
__construct (array $config) | |
clearCache (array $paths=null) | |
concatenate (array $params) | |
copyInternal (array $params) | |
Copy a file from one storage path to another in the backend. | |
createInternal (array $params) | |
Create a file in the backend with the given contents. | |
deleteInternal (array $params) | |
Delete a file at the storage path. | |
directoryExists (array $params) | |
executeOpHandlesInternal (array $fileOpHandles) | |
Execute a list of FileBackendStoreOpHandle handles in parallel. | |
fileExists (array $params) | |
getDirectoryList (array $params) | |
getDirectoryListInternal ($container, $dir, array $params) | |
Do not call this function from places outside FileBackend. | |
getFileContents (array $params) | |
getFileList (array $params) | |
getFileListInternal ($container, $dir, array $params) | |
Do not call this function from places outside FileBackend. | |
getFileProps (array $params) | |
getFileSha1Base36 (array $params) | |
getFileSize (array $params) | |
getFileStat (array $params) | |
getFileTimestamp (array $params) | |
getLocalReference (array $params) | |
getOperationsInternal (array $ops) | |
Return a list of FileOp objects from a list of operations. | |
getPathsToLockForOpsInternal (array $performOps) | |
Get a list of storage paths to lock for a list of operations Returns an array with 'sh' (shared) and 'ex' (exclusive) keys, each corresponding to a list of storage paths to be locked. | |
getScopedLocksForOps (array $ops, Status $status) | |
isPathUsableInternal ($storagePath) | |
Check if a file can be created at a given storage path. | |
isSingleShardPathInternal ($storagePath) | |
Check if a storage path maps to a single shard. | |
maxFileSizeInternal () | |
Get the maximum allowable file size given backend medium restrictions and basic performance constraints. | |
moveInternal (array $params) | |
Move a file from one storage path to another in the backend. | |
nullInternal (array $params) | |
No-op file operation that does nothing. | |
preloadCache (array $paths) | |
storeInternal (array $params) | |
Store a file into the backend from a file on disk. | |
streamFile (array $params) | |
Protected Member Functions | |
deleteContainerCache ($container) | |
Delete the cached info for a container. | |
deleteFileCache ($path) | |
Delete the cached stat info for a file path. | |
directoriesAreVirtual () | |
Is this a key/value store where directories are just virtual? Virtual directories exists in so much as files exists that are prefixed with the directory path followed by a forward slash. | |
doClean (array $params) | |
doCleanInternal ($container, $dir, array $params) | |
doClearCache (array $paths=null) | |
Clears any additional stat caches for storage paths. | |
doConcatenate (array $params) | |
doCopyInternal (array $params) | |
doCreateInternal (array $params) | |
doDeleteInternal (array $params) | |
doDirectoryExists ($container, $dir, array $params) | |
doExecuteOpHandlesInternal (array $fileOpHandles) | |
doGetFileSha1Base36 (array $params) | |
doGetFileStat (array $params) | |
doMoveInternal (array $params) | |
doOperationsInternal (array $ops, array $opts) | |
doPrepare (array $params) | |
doPrepareInternal ($container, $dir, array $params) | |
doPrimeContainerCache (array $containerInfo) | |
Fill the backend-specific process cache given an array of resolved container names and their corresponding cached info. | |
doPublish (array $params) | |
doPublishInternal ($container, $dir, array $params) | |
doQuickOperationsInternal (array $ops) | |
doSecure (array $params) | |
doSecureInternal ($container, $dir, array $params) | |
doStoreInternal (array $params) | |
doStreamFile (array $params) | |
fullContainerName ($container) | |
Get the full container name, including the wiki ID prefix. | |
getContainerHashLevels ($container) | |
Get the sharding config for a container. | |
getContainerShard ($container, $relPath) | |
Get the container name shard suffix for a given path. | |
getContainerSuffixes ($container) | |
Get a list of full container shard suffixes for a container. | |
primeContainerCache (array $items) | |
Do a batch lookup from cache for container stats for all containers used in a list of container names, storage paths, or FileOp objects. | |
primeFileCache (array $items) | |
Do a batch lookup from cache for file stats for all paths used in a list of storage paths or FileOp objects. | |
resolveContainerName ($container) | |
Resolve a container name, checking if it's allowed by the backend. | |
resolveContainerPath ($container, $relStoragePath) | |
Resolve a relative storage path, checking if it's allowed by the backend. | |
resolveStoragePath ($storagePath) | |
Splits a storage path into an internal container name, an internal relative file name, and a container shard suffix. | |
resolveStoragePathReal ($storagePath) | |
Like resolveStoragePath() except null values are returned if the container is sharded and the shard could not be determined. | |
setContainerCache ($container, $val) | |
Set the cached info for a container. | |
setFileCache ($path, $val) | |
Set the cached stat info for a file path. | |
Static Protected Member Functions | |
static | isValidContainerName ($container) |
Check if a container name is valid. | |
Protected Attributes | |
ProcessCacheLRU | $cheapCache |
* | |
ProcessCacheLRU | $expensiveCache |
* | |
$maxFileSize = 4294967296 | |
BagOStuff | $memCache |
* | |
Array | $shardViaHashLevels = array() |
Map of container names to sharding settings *. | |
Private Member Functions | |
containerCacheKey ($container) | |
Get the cache key for a container. | |
fileCacheKey ($path) | |
Get the cache key for a file path. |
Base class for all backends using particular storage medium.
This class defines the methods as abstract that subclasses must implement. Outside callers should *not* use functions with "Internal" in the name.
The FileBackend operations are implemented using basic functions such as storeInternal(), copyInternal(), deleteInternal() and the like. This class is also responsible for path resolution and sanitization.
Definition at line 38 of file FileBackendStore.php.
FileBackendStore::__construct | ( | array $ | config | ) |
$config | Array |
Reimplemented from FileBackend.
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 52 of file FileBackendStore.php.
FileBackendStore::clearCache | ( | array $ | paths = null | ) | [final] |
Reimplemented from FileBackend.
Definition at line 1142 of file FileBackendStore.php.
References $path, and doClearCache().
FileBackendStore::concatenate | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 283 of file FileBackendStore.php.
FileBackendStore::containerCacheKey | ( | $ | container | ) | [private] |
Get the cache key for a container.
$container | string Resolved container name |
Definition at line 1384 of file FileBackendStore.php.
FileBackendStore::copyInternal | ( | array $ | params | ) | [final] |
Copy a file from one storage path to another in the backend.
Do not call this function from places outside FileBackend and FileOp.
$params include:
$params | Array |
Definition at line 174 of file FileBackendStore.php.
FileBackendStore::createInternal | ( | array $ | params | ) | [final] |
Create a file in the backend with the given contents.
Do not call this function from places outside FileBackend and FileOp.
$params include:
$params | Array |
Definition at line 96 of file FileBackendStore.php.
FileBackendStore::deleteContainerCache | ( | $ | container | ) | [final, protected] |
Delete the cached info for a container.
The cache key is salted for a while to prevent race conditions.
$container | string Resolved container name |
Definition at line 1404 of file FileBackendStore.php.
FileBackendStore::deleteFileCache | ( | $ | path | ) | [final, protected] |
Delete the cached stat info for a file path.
The cache key is salted for a while to prevent race conditions.
$path | string Storage path |
Definition at line 1494 of file FileBackendStore.php.
FileBackendStore::deleteInternal | ( | array $ | params | ) | [final] |
Delete a file at the storage path.
Do not call this function from places outside FileBackend and FileOp.
$params include:
$params | Array |
Definition at line 206 of file FileBackendStore.php.
FileBackendStore::directoriesAreVirtual | ( | ) | [abstract, protected] |
Is this a key/value store where directories are just virtual? Virtual directories exists in so much as files exists that are prefixed with the directory path followed by a forward slash.
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::directoryExists | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 805 of file FileBackendStore.php.
FileBackendStore::doClean | ( | array $ | params | ) | [final, protected] |
Reimplemented from FileBackend.
Definition at line 486 of file FileBackendStore.php.
FileBackendStore::doCleanInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 540 of file FileBackendStore.php.
FileBackendStore::doClearCache | ( | array $ | paths = null | ) | [protected] |
Clears any additional stat caches for storage paths.
$paths | Array Storage paths (optional) |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 1167 of file FileBackendStore.php.
Referenced by clearCache().
FileBackendStore::doConcatenate | ( | array $ | params | ) | [protected] |
Definition at line 310 of file FileBackendStore.php.
FileBackendStore::doCopyInternal | ( | array $ | params | ) | [abstract, protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::doCreateInternal | ( | array $ | params | ) | [abstract, protected] |
Reimplemented in FSFileBackend, and SwiftFileBackend.
FileBackendStore::doDeleteInternal | ( | array $ | params | ) | [abstract, protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::doDirectoryExists | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [abstract, protected] |
$container | string Resolved container name |
$dir | string Resolved path relative to container |
$params | Array |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::doExecuteOpHandlesInternal | ( | array $ | fileOpHandles | ) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 1118 of file FileBackendStore.php.
FileBackendStore::doGetFileSha1Base36 | ( | array $ | params | ) | [protected] |
Definition at line 695 of file FileBackendStore.php.
FileBackendStore::doGetFileStat | ( | array $ | params | ) | [abstract, protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::doMoveInternal | ( | array $ | params | ) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 256 of file FileBackendStore.php.
FileBackendStore::doOperationsInternal | ( | array $ | ops, |
array $ | opts | ||
) | [final, protected] |
Reimplemented from FileBackend.
Definition at line 983 of file FileBackendStore.php.
FileBackendStore::doPrepare | ( | array $ | params | ) | [final, protected] |
Reimplemented from FileBackend.
Definition at line 366 of file FileBackendStore.php.
FileBackendStore::doPrepareInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 398 of file FileBackendStore.php.
FileBackendStore::doPrimeContainerCache | ( | array $ | containerInfo | ) | [protected] |
Fill the backend-specific process cache given an array of resolved container names and their corresponding cached info.
Only containers that actually exist should appear in the map.
$containerInfo | Array Map of resolved container names to cached info |
Reimplemented in SwiftFileBackend.
Definition at line 1464 of file FileBackendStore.php.
FileBackendStore::doPublish | ( | array $ | params | ) | [final, protected] |
Reimplemented from FileBackend.
Definition at line 446 of file FileBackendStore.php.
FileBackendStore::doPublishInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 478 of file FileBackendStore.php.
FileBackendStore::doQuickOperationsInternal | ( | array $ | ops | ) | [final, protected] |
MWException |
Reimplemented from FileBackend.
Definition at line 1031 of file FileBackendStore.php.
FileBackendStore::doSecure | ( | array $ | params | ) | [final, protected] |
Reimplemented from FileBackend.
Definition at line 406 of file FileBackendStore.php.
FileBackendStore::doSecureInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 438 of file FileBackendStore.php.
FileBackendStore::doStoreInternal | ( | array $ | params | ) | [abstract, protected] |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::doStreamFile | ( | array $ | params | ) | [protected] |
Reimplemented in SwiftFileBackend.
Definition at line 788 of file FileBackendStore.php.
FileBackendStore::executeOpHandlesInternal | ( | array $ | fileOpHandles | ) | [final] |
Execute a list of FileBackendStoreOpHandle handles in parallel.
The resulting Status object fields will correspond to the order in which the handles where given.
$handles | Array List of FileBackendStoreOpHandle objects |
MWException |
Definition at line 1095 of file FileBackendStore.php.
FileBackendStore::fileCacheKey | ( | $ | path | ) | [private] |
Get the cache key for a file path.
$path | string Storage path |
Definition at line 1472 of file FileBackendStore.php.
FileBackendStore::fileExists | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 548 of file FileBackendStore.php.
Referenced by SwiftFileBackend\doCopyInternal(), SwiftFileBackend\doCreateInternal(), SwiftFileBackend\doMoveInternal(), SwiftFileBackend\doStoreInternal(), and SwiftFileBackend\getFileContents().
FileBackendStore::fullContainerName | ( | $ | container | ) | [final, protected] |
Get the full container name, including the wiki ID prefix.
$container | string |
Definition at line 1344 of file FileBackendStore.php.
FileBackendStore::getContainerHashLevels | ( | $ | container | ) | [final, protected] |
Get the sharding config for a container.
If greater than 0, then all file storage paths within the container are required to be hashed accordingly.
$container | string |
Definition at line 1306 of file FileBackendStore.php.
FileBackendStore::getContainerShard | ( | $ | container, |
$ | relPath | ||
) | [final, protected] |
Get the container name shard suffix for a given path.
Any empty suffix means the container is not sharded.
$container | string Container name |
$relPath | string Storage path relative to the container |
Definition at line 1257 of file FileBackendStore.php.
FileBackendStore::getContainerSuffixes | ( | $ | container | ) | [final, protected] |
Get a list of full container shard suffixes for a container.
$container | string |
Definition at line 1326 of file FileBackendStore.php.
FileBackendStore::getDirectoryList | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 843 of file FileBackendStore.php.
FileBackendStore::getDirectoryListInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [abstract] |
Do not call this function from places outside FileBackend.
$container | string Resolved container name |
$dir | string Resolved path relative to container |
$params | Array |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::getFileContents | ( | array $ | params | ) |
Reimplemented from FileBackend.
Reimplemented in SwiftFileBackend.
Definition at line 638 of file FileBackendStore.php.
FileBackendStore::getFileList | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 876 of file FileBackendStore.php.
FileBackendStore::getFileListInternal | ( | $ | container, |
$ | dir, | ||
array $ | params | ||
) | [abstract] |
Do not call this function from places outside FileBackend.
$container | string Resolved container name |
$dir | string Resolved path relative to container |
$params | Array |
Reimplemented in SwiftFileBackend, and FSFileBackend.
FileBackendStore::getFileProps | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 708 of file FileBackendStore.php.
FileBackendStore::getFileSha1Base36 | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 659 of file FileBackendStore.php.
FileBackendStore::getFileSize | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 574 of file FileBackendStore.php.
FileBackendStore::getFileStat | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 587 of file FileBackendStore.php.
Referenced by SwiftFileBackend\doGetFileSha1base36().
FileBackendStore::getFileTimestamp | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 561 of file FileBackendStore.php.
FileBackendStore::getLocalReference | ( | array $ | params | ) |
Reimplemented from FileBackend.
Reimplemented in FSFileBackend.
Definition at line 722 of file FileBackendStore.php.
FileBackendStore::getOperationsInternal | ( | array $ | ops | ) | [final] |
Return a list of FileOp objects from a list of operations.
Do not call this function from places outside FileBackend.
The result must have the same number of items as the input. An exception is thrown if an unsupported operation is requested.
$ops | Array Same format as doOperations() |
MWException |
Definition at line 916 of file FileBackendStore.php.
FileBackendStore::getPathsToLockForOpsInternal | ( | array $ | performOps | ) | [final] |
Get a list of storage paths to lock for a list of operations Returns an array with 'sh' (shared) and 'ex' (exclusive) keys, each corresponding to a list of storage paths to be locked.
$performOps | Array List of FileOp objects |
Definition at line 952 of file FileBackendStore.php.
FileBackendStore::getScopedLocksForOps | ( | array $ | ops, |
Status $ | status | ||
) |
Reimplemented from FileBackend.
Definition at line 971 of file FileBackendStore.php.
FileBackendStore::isPathUsableInternal | ( | $ | storagePath | ) | [abstract] |
Check if a file can be created at a given storage path.
FS backends should check if the parent directory exists and the file is writable. Backends using key/value stores should check if the container exists.
$storagePath | string |
Reimplemented in FSFileBackend, and SwiftFileBackend.
FileBackendStore::isSingleShardPathInternal | ( | $ | storagePath | ) | [final] |
Check if a storage path maps to a single shard.
Container dirs like "a", where the container shards on "x/xy", can reside on several shards. Such paths are tricky to handle.
$storagePath | string Storage path |
Definition at line 1293 of file FileBackendStore.php.
static FileBackendStore::isValidContainerName | ( | $ | container | ) | [static, final, protected] |
Check if a container name is valid.
This checks for for length and illegal characters.
$container | string |
Definition at line 1185 of file FileBackendStore.php.
FileBackendStore::maxFileSizeInternal | ( | ) | [final] |
Get the maximum allowable file size given backend medium restrictions and basic performance constraints.
Do not call this function from places outside FileBackend and FileOp.
Definition at line 66 of file FileBackendStore.php.
FileBackendStore::moveInternal | ( | array $ | params | ) | [final] |
Move a file from one storage path to another in the backend.
Do not call this function from places outside FileBackend and FileOp.
$params include:
$params | Array |
Definition at line 238 of file FileBackendStore.php.
FileBackendStore::nullInternal | ( | array $ | params | ) | [final] |
No-op file operation that does nothing.
Do not call this function from places outside FileBackend and FileOp.
$params | Array |
Definition at line 275 of file FileBackendStore.php.
FileBackendStore::preloadCache | ( | array $ | paths | ) | [final] |
Reimplemented from FileBackend.
Definition at line 1128 of file FileBackendStore.php.
References $path, $s, primeContainerCache(), primeFileCache(), and resolveStoragePath().
FileBackendStore::primeContainerCache | ( | array $ | items | ) | [final, protected] |
Do a batch lookup from cache for container stats for all containers used in a list of container names, storage paths, or FileOp objects.
$items | Array |
Definition at line 1417 of file FileBackendStore.php.
Referenced by preloadCache().
FileBackendStore::primeFileCache | ( | array $ | items | ) | [final, protected] |
Do a batch lookup from cache for file stats for all paths used in a list of storage paths or FileOp objects.
$items | Array List of storage paths or FileOps |
Definition at line 1507 of file FileBackendStore.php.
Referenced by preloadCache().
FileBackendStore::resolveContainerName | ( | $ | container | ) | [protected] |
Resolve a container name, checking if it's allowed by the backend.
This is intended for internal use, such as encoding illegal chars. Subclasses can override this to be more restrictive.
$container | string |
Definition at line 1360 of file FileBackendStore.php.
FileBackendStore::resolveContainerPath | ( | $ | container, |
$ | relStoragePath | ||
) | [protected] |
Resolve a relative storage path, checking if it's allowed by the backend.
This is intended for internal use, such as encoding illegal chars or perhaps getting absolute paths (e.g. FS based backends). Note that the relative path may be the empty string (e.g. the path is simply to the container).
$container | string Container name |
$relStoragePath | string Storage path relative to the container |
Reimplemented in SwiftFileBackend, and FSFileBackend.
Definition at line 1374 of file FileBackendStore.php.
FileBackendStore::resolveStoragePath | ( | $ | storagePath | ) | [final, protected] |
Splits a storage path into an internal container name, an internal relative file name, and a container shard suffix.
Any shard suffix is already appended to the internal container name. This also checks that the storage path is valid and within this backend.
If the container is sharded but a suffix could not be determined, this means that the path can only refer to a directory and can only be scanned by looking in all the container shards.
$storagePath | string |
Definition at line 1207 of file FileBackendStore.php.
Referenced by preloadCache().
FileBackendStore::resolveStoragePathReal | ( | $ | storagePath | ) | [final, protected] |
Like resolveStoragePath() except null values are returned if the container is sharded and the shard could not be determined.
$storagePath | string |
Definition at line 1241 of file FileBackendStore.php.
Referenced by SwiftFileBackend\doCopyInternal(), SwiftFileBackend\doCreateInternal(), SwiftFileBackend\doDeleteInternal(), SwiftFileBackend\doGetFileStat(), SwiftFileBackend\doMoveInternal(), SwiftFileBackend\doStoreInternal(), SwiftFileBackend\doStreamFile(), SwiftFileBackend\getFileContents(), SwiftFileBackend\getLocalCopy(), and SwiftFileBackend\isPathUsableInternal().
FileBackendStore::setContainerCache | ( | $ | container, |
$ | val | ||
) | [final, protected] |
Set the cached info for a container.
$container | string Resolved container name |
$val | mixed Information to cache |
Definition at line 1394 of file FileBackendStore.php.
FileBackendStore::setFileCache | ( | $ | path, |
$ | val | ||
) | [final, protected] |
Set the cached stat info for a file path.
Negatives (404s) are not cached. By not caching negatives, we can skip cache salting for the case when a file is created at a path were there was none before.
$path | string Storage path |
$val | mixed Information to cache |
Definition at line 1484 of file FileBackendStore.php.
FileBackendStore::storeInternal | ( | array $ | params | ) | [final] |
Store a file into the backend from a file on disk.
Do not call this function from places outside FileBackend and FileOp.
$params include:
$params | Array |
Definition at line 135 of file FileBackendStore.php.
FileBackendStore::streamFile | ( | array $ | params | ) | [final] |
Reimplemented from FileBackend.
Definition at line 754 of file FileBackendStore.php.
ProcessCacheLRU FileBackendStore::$cheapCache [protected] |
*
Definition at line 40 of file FileBackendStore.php.
ProcessCacheLRU FileBackendStore::$expensiveCache [protected] |
*
Definition at line 41 of file FileBackendStore.php.
FileBackendStore::$maxFileSize = 4294967296 [protected] |
Definition at line 45 of file FileBackendStore.php.
BagOStuff FileBackendStore::$memCache [protected] |
*
Definition at line 39 of file FileBackendStore.php.
Array FileBackendStore::$shardViaHashLevels = array() [protected] |
Map of container names to sharding settings *.
Definition at line 43 of file FileBackendStore.php.