MediaWiki  REL1_21
FileBackendStore Class Reference

Base class for all backends using particular storage medium. More...

Inheritance diagram for FileBackendStore:
Collaboration diagram for FileBackendStore:

List of all members.

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.
 describeInternal (array $params)
 Alter metadata for 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.
 getFileContentsMulti (array $params)
 getFileHttpUrl (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)
 getLocalCopyMulti (array $params)
 getLocalReferenceMulti (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 or changed 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)

Public Attributes

const CACHE_TTL = 10

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)
 doDescribeInternal (array $params)
 doDirectoryExists ($container, $dir, array $params)
 doExecuteOpHandlesInternal (array $fileOpHandles)
 doGetFileContentsMulti (array $params)
 doGetFileSha1Base36 (array $params)
 doGetFileStat (array $params)
 doGetLocalCopyMulti (array $params)
 doGetLocalReferenceMulti (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.
 setConcurrencyFlags (array $opts)
 Set the 'concurrency' option from a list of operation options.
 setContainerCache ($container, $val)
 Set the cached info for a container.
 setFileCache ($path, $val)
 Set the cached stat info for a file path.
 stripInvalidHeadersFromOp (array $op)
 Strip long HTTP headers from a file operation.

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.

Detailed Description

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.

Since:
1.19

Definition at line 38 of file FileBackendStore.php.


Constructor & Destructor Documentation

See also:
FileBackend::__construct()
Parameters:
$configArray

Reimplemented from FileBackend.

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 54 of file FileBackendStore.php.


Member Function Documentation

FileBackendStore::clearCache ( array paths = null) [final]
See also:
FileBackend::clearCache()

Reimplemented from FileBackend.

Definition at line 1312 of file FileBackendStore.php.

References $path, as, and doClearCache().

FileBackendStore::concatenate ( array params) [final]
See also:
FileBackend::concatenate()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 336 of file FileBackendStore.php.

FileBackendStore::containerCacheKey ( container) [private]

Get the cache key for a container.

Parameters:
string$containerResolved container name
Returns:
string

Definition at line 1554 of file FileBackendStore.php.

FileBackendStore::copyInternal ( array params) [final]

Copy a file from one storage path to another in the backend.

This will overwrite any file that exists at the destination. Do not call this function from places outside FileBackend and FileOp.

$params include:

  • src : source storage path
  • dst : destination storage path
  • ignoreMissingSource : do nothing if the source file does not exist
  • disposition : Content-Disposition header value for the destination
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
  • dstExists : Whether a file exists at the destination (optimization). Callers can use "false" if no existing file is being changed.
Parameters:
array$params
Returns:
Status

Definition at line 188 of file FileBackendStore.php.

FileBackendStore::createInternal ( array params) [final]

Create a file in the backend with the given contents.

This will overwrite any file that exists at the destination. Do not call this function from places outside FileBackend and FileOp.

$params include:

  • content : the raw file contents
  • dst : destination storage path
  • disposition : Content-Disposition header value for the destination
  • headers : HTTP header name/value map
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
  • dstExists : Whether a file exists at the destination (optimization). Callers can use "false" if no existing file is being changed.
Parameters:
array$params
Returns:
Status

Definition at line 102 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.

Parameters:
string$containerResolved container name

Definition at line 1574 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. Since negatives (404s) are not cached, this does not need to be called when a file is created at a path were there was none before.

Parameters:
string$pathStorage path

Definition at line 1671 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:

  • src : source storage path
  • ignoreMissingSource : do nothing if the source file does not exist
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
Parameters:
array$params
Returns:
Status

Definition at line 221 of file FileBackendStore.php.

Alter metadata for a file at the storage path.

Do not call this function from places outside FileBackend and FileOp.

$params include:

  • src : source storage path
  • disposition : Content-Disposition header value for the destination
  • headers : HTTP header name/value map
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
Parameters:
array$params
Returns:
Status

Definition at line 302 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.

Returns:
bool

Reimplemented in SwiftFileBackend, and FSFileBackend.

See also:
FileBackend::directoryExists()
Returns:
bool|null

Reimplemented from FileBackend.

Definition at line 941 of file FileBackendStore.php.

FileBackendStore::doClean ( array params) [final, protected]
See also:
FileBackend::doClean()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 549 of file FileBackendStore.php.

FileBackendStore::doCleanInternal ( container,
dir,
array params 
) [protected]
See also:
FileBackendStore::doClean()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 604 of file FileBackendStore.php.

FileBackendStore::doClearCache ( array paths = null) [protected]

Clears any additional stat caches for storage paths.

See also:
FileBackend::clearCache()
Parameters:
array$pathsStorage paths (optional)
Returns:
void

Reimplemented in FSFileBackend.

Definition at line 1337 of file FileBackendStore.php.

Referenced by clearCache().

FileBackendStore::doConcatenate ( array params) [protected]
See also:
FileBackendStore::concatenate()
Returns:
Status

Definition at line 363 of file FileBackendStore.php.

FileBackendStore::doCopyInternal ( array params) [abstract, protected]
See also:
FileBackendStore::copyInternal()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

FileBackendStore::doCreateInternal ( array params) [abstract, protected]
FileBackendStore::doDeleteInternal ( array params) [abstract, protected]
FileBackendStore::doDescribeInternal ( array params) [protected]
See also:
FileBackendStore::describeInternal()
Returns:
Status

Reimplemented in SwiftFileBackend.

Definition at line 317 of file FileBackendStore.php.

FileBackendStore::doDirectoryExists ( container,
dir,
array params 
) [abstract, protected]
See also:
FileBackendStore::directoryExists()
Parameters:
string$containerResolved container name
string$dirResolved path relative to container
array$params
Returns:
bool|null

Reimplemented in SwiftFileBackend, and FSFileBackend.

FileBackendStore::doExecuteOpHandlesInternal ( array fileOpHandles) [protected]
See also:
FileBackendStore::executeOpHandlesInternal()
Parameters:
array$fileOpHandles
Exceptions:
MWException
Returns:
Array List of corresponding Status objects

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 1268 of file FileBackendStore.php.

See also:
FileBackendStore::getFileContentsMulti()
Returns:
Array

Reimplemented in SwiftFileBackend.

Definition at line 729 of file FileBackendStore.php.

FileBackendStore::doGetFileSha1Base36 ( array params) [protected]
See also:
FileBackendStore::getFileSha1Base36()
Returns:
bool|string

Definition at line 776 of file FileBackendStore.php.

FileBackendStore::doGetFileStat ( array params) [abstract, protected]
FileBackendStore::doGetLocalCopyMulti ( array params) [abstract, protected]
See also:
FileBackendStore::getLocalCopyMulti()
Returns:
Array

Reimplemented in SwiftFileBackend, and FSFileBackend.

See also:
FileBackendStore::getLocalReferenceMulti()
Returns:
Array

Reimplemented in FSFileBackend.

Definition at line 844 of file FileBackendStore.php.

FileBackendStore::doMoveInternal ( array params) [protected]
See also:
FileBackendStore::moveInternal()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 275 of file FileBackendStore.php.

FileBackendStore::doOperationsInternal ( array ops,
array opts 
) [final, protected]
See also:
FileBackend::doOperationsInternal()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 1121 of file FileBackendStore.php.

FileBackendStore::doPrepare ( array params) [final, protected]
See also:
FileBackend::doPrepare()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 429 of file FileBackendStore.php.

FileBackendStore::doPrepareInternal ( container,
dir,
array params 
) [protected]
See also:
FileBackendStore::doPrepare()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 461 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.

Parameters:
array$containerInfoMap of resolved container names to cached info
Returns:
void

Reimplemented in SwiftFileBackend.

Definition at line 1635 of file FileBackendStore.php.

FileBackendStore::doPublish ( array params) [final, protected]
See also:
FileBackend::doPublish()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 509 of file FileBackendStore.php.

FileBackendStore::doPublishInternal ( container,
dir,
array params 
) [protected]
See also:
FileBackendStore::doPublish()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 541 of file FileBackendStore.php.

FileBackendStore::doQuickOperationsInternal ( array ops) [final, protected]
See also:
FileBackend::doQuickOperationsInternal()
Returns:
Status
Exceptions:
MWException

Reimplemented from FileBackend.

Definition at line 1173 of file FileBackendStore.php.

FileBackendStore::doSecure ( array params) [final, protected]
See also:
FileBackend::doSecure()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 469 of file FileBackendStore.php.

FileBackendStore::doSecureInternal ( container,
dir,
array params 
) [protected]
See also:
FileBackendStore::doSecure()
Returns:
Status

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 501 of file FileBackendStore.php.

FileBackendStore::doStoreInternal ( array params) [abstract, protected]
FileBackendStore::doStreamFile ( array params) [protected]
See also:
FileBackendStore::streamFile()
Returns:
Status

Reimplemented in SwiftFileBackend.

Definition at line 924 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.

Parameters:
array$handlesList of FileBackendStoreOpHandle objects
Returns:
Array Map of Status objects
Exceptions:
MWException

Definition at line 1243 of file FileBackendStore.php.

FileBackendStore::fileCacheKey ( path) [private]

Get the cache key for a file path.

Parameters:
string$pathNormalized storage path
Returns:
string

Definition at line 1643 of file FileBackendStore.php.

FileBackendStore::fileExists ( array params) [final]
See also:
FileBackend::fileExists()
Returns:
bool|null

Reimplemented from FileBackend.

Definition at line 612 of file FileBackendStore.php.

FileBackendStore::fullContainerName ( container) [final, protected]

Get the full container name, including the wiki ID prefix.

Parameters:
$containerstring
Returns:
string

Definition at line 1514 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.

Parameters:
$containerstring
Returns:
Array (integer levels, integer base, repeat flag) or (0, 0, false)

Definition at line 1476 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.

Parameters:
string$containerContainer name
string$relPathStorage path relative to the container
Returns:
string|null Returns null if shard could not be determined

Definition at line 1427 of file FileBackendStore.php.

FileBackendStore::getContainerSuffixes ( container) [final, protected]

Get a list of full container shard suffixes for a container.

Parameters:
$containerstring
Returns:
Array

Definition at line 1496 of file FileBackendStore.php.

See also:
FileBackend::getDirectoryList()
Returns:
Traversable|Array|null Returns null on failure

Reimplemented from FileBackend.

Definition at line 979 of file FileBackendStore.php.

FileBackendStore::getDirectoryListInternal ( container,
dir,
array params 
) [abstract]

Do not call this function from places outside FileBackend.

See also:
FileBackendStore::getDirectoryList()
Parameters:
string$containerResolved container name
string$dirResolved path relative to container
array$params
Returns:
Traversable|Array|null Returns null on failure

Reimplemented in SwiftFileBackend, and FSFileBackend.

See also:
FileBackend::getFileContentsMulti()
Returns:
Array

Reimplemented from FileBackend.

Definition at line 713 of file FileBackendStore.php.

See also:
FileBackend::getFileHttpUrl()
Returns:
string|null

Reimplemented from FileBackend.

Reimplemented in SwiftFileBackend.

Definition at line 874 of file FileBackendStore.php.

FileBackendStore::getFileList ( array params) [final]
See also:
FileBackend::getFileList()
Returns:
Traversable|Array|null Returns null on failure

Reimplemented from FileBackend.

Definition at line 1012 of file FileBackendStore.php.

FileBackendStore::getFileListInternal ( container,
dir,
array params 
) [abstract]

Do not call this function from places outside FileBackend.

See also:
FileBackendStore::getFileList()
Parameters:
string$containerResolved container name
string$dirResolved path relative to container
array$params
Returns:
Traversable|Array|null Returns null on failure

Reimplemented in SwiftFileBackend, and FSFileBackend.

FileBackendStore::getFileProps ( array params) [final]
See also:
FileBackend::getFileProps()
Returns:
Array

Reimplemented from FileBackend.

Definition at line 789 of file FileBackendStore.php.

See also:
FileBackend::getFileSha1Base36()
Returns:
bool|string

Reimplemented from FileBackend.

Definition at line 743 of file FileBackendStore.php.

FileBackendStore::getFileSize ( array params) [final]
See also:
FileBackend::getFileSize()
Returns:
bool

Reimplemented from FileBackend.

Definition at line 638 of file FileBackendStore.php.

FileBackendStore::getFileStat ( array params) [final]
See also:
FileBackend::getFileStat()
Returns:
bool

Reimplemented from FileBackend.

Definition at line 651 of file FileBackendStore.php.

Referenced by SwiftFileBackend\doGetFileSha1base36().

See also:
FileBackend::getFileTimestamp()
Returns:
bool

Reimplemented from FileBackend.

Definition at line 625 of file FileBackendStore.php.

See also:
FileBackend::getLocalCopyMulti()
Returns:
Array

Reimplemented from FileBackend.

Definition at line 852 of file FileBackendStore.php.

See also:
FileBackend::getLocalReferenceMulti()
Returns:
Array

Reimplemented from FileBackend.

Definition at line 803 of file FileBackendStore.php.

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.

Parameters:
array$opsSame format as doOperations()
Returns:
Array List of FileOp objects
Exceptions:
MWException

Definition at line 1052 of file FileBackendStore.php.

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.

All returned paths are normalized.

Parameters:
array$performOpsList of FileOp objects
Returns:
Array ('sh' => list of paths, 'ex' => list of paths)

Definition at line 1090 of file FileBackendStore.php.

See also:
FileBackend::getScopedLocksForOps()
Returns:
Array

Reimplemented from FileBackend.

Definition at line 1109 of file FileBackendStore.php.

FileBackendStore::isPathUsableInternal ( storagePath) [abstract]

Check if a file can be created or changed at a given storage path.

FS backends should check if the parent directory exists, files can be written under it, and that any file already there is writable. Backends using key/value stores should check if the container exists.

Parameters:
$storagePathstring
Returns:
bool

Reimplemented in SwiftFileBackend, and FSFileBackend.

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.

Parameters:
string$storagePathStorage path
Returns:
bool

Definition at line 1463 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.

Parameters:
$containerstring
Returns:
bool

Definition at line 1355 of file FileBackendStore.php.

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.

Returns:
integer Bytes

Definition at line 68 of file FileBackendStore.php.

FileBackendStore::moveInternal ( array params) [final]

Move a file from one storage path to another in the backend.

This will overwrite any file that exists at the destination. Do not call this function from places outside FileBackend and FileOp.

$params include:

  • src : source storage path
  • dst : destination storage path
  • ignoreMissingSource : do nothing if the source file does not exist
  • disposition : Content-Disposition header value for the destination
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
  • dstExists : Whether a file exists at the destination (optimization). Callers can use "false" if no existing file is being changed.
Parameters:
array$params
Returns:
Status

Definition at line 257 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.

Parameters:
array$params
Returns:
Status

Definition at line 328 of file FileBackendStore.php.

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.

This loads the persistent cache values into the process cache.

Parameters:
$itemsArray
Returns:
void

Definition at line 1588 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.

This loads the persistent cache values into the process cache.

Parameters:
array$itemsList of storage paths or FileOps
Returns:
void

Definition at line 1689 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.

Parameters:
$containerstring
Returns:
string|null

Definition at line 1530 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).

Parameters:
string$containerContainer name
string$relStoragePathStorage path relative to the container
Returns:
string|null Path or null if not valid

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 1544 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.

Parameters:
$storagePathstring
Returns:
Array (container, path, container suffix) or (null, null, null) if invalid

Definition at line 1377 of file FileBackendStore.php.

Referenced by preloadCache().

FileBackendStore::setConcurrencyFlags ( array opts) [final, protected]

Set the 'concurrency' option from a list of operation options.

Parameters:
array$optsMap of operation options
Returns:
Array

Definition at line 1736 of file FileBackendStore.php.

FileBackendStore::setContainerCache ( container,
val 
) [final, protected]

Set the cached info for a container.

Parameters:
string$containerResolved container name
$valmixed Information to cache

Definition at line 1564 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.

Parameters:
string$pathStorage path
$valmixed Information to cache

Definition at line 1655 of file FileBackendStore.php.

FileBackendStore::storeInternal ( array params) [final]

Store a file into the backend from a file on disk.

This will overwrite any file that exists at the destination. Do not call this function from places outside FileBackend and FileOp.

$params include:

  • src : source path on disk
  • dst : destination storage path
  • disposition : Content-Disposition header value for the destination
  • headers : HTTP header name/value map
  • async : Status will be returned immediately if supported. If the status is OK, then its value field will be set to a FileBackendStoreOpHandle object.
  • dstExists : Whether a file exists at the destination (optimization). Callers can use "false" if no existing file is being changed.
Parameters:
array$params
Returns:
Status

Definition at line 145 of file FileBackendStore.php.

FileBackendStore::streamFile ( array params) [final]
See also:
FileBackend::streamFile()
Returns:
Status

Reimplemented from FileBackend.

Definition at line 882 of file FileBackendStore.php.

Strip long HTTP headers from a file operation.

Parameters:
array$opSame format as doOperation()
Returns:
Array

Definition at line 1281 of file FileBackendStore.php.


Member Data Documentation

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.

Definition at line 47 of file FileBackendStore.php.


The documentation for this class was generated from the following file: