MediaWiki  master
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 1315 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:
$containerstring Resolved container name
Returns:
string

Definition at line 1557 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:
$paramsArray
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:
$paramsArray
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:
$containerstring Resolved container name

Definition at line 1577 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:
$pathstring Storage path

Definition at line 1674 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:
$paramsArray
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:
$paramsArray
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 944 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:
$pathsArray Storage paths (optional)
Returns:
void

Reimplemented in FSFileBackend.

Definition at line 1340 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:
$containerstring Resolved container name
$dirstring Resolved path relative to container
$paramsArray
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 1271 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 779 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 847 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 1124 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:
$containerInfoArray Map of resolved container names to cached info
Returns:
void

Reimplemented in SwiftFileBackend.

Definition at line 1638 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 1176 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 927 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:
$handlesArray List of FileBackendStoreOpHandle objects
Returns:
Array Map of Status objects
Exceptions:
MWException

Definition at line 1246 of file FileBackendStore.php.

FileBackendStore::fileCacheKey ( path) [private]

Get the cache key for a file path.

Parameters:
$pathstring Normalized storage path
Returns:
string

Definition at line 1646 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 1517 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 1479 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:
$containerstring Container name
$relPathstring Storage path relative to the container
Returns:
string|null Returns null if shard could not be determined

Definition at line 1430 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 1499 of file FileBackendStore.php.

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

Reimplemented from FileBackend.

Definition at line 982 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:
$containerstring Resolved container name
$dirstring Resolved path relative to container
$paramsArray
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 877 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 1015 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:
$containerstring Resolved container name
$dirstring Resolved path relative to container
$paramsArray
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 792 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 855 of file FileBackendStore.php.

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

Reimplemented from FileBackend.

Definition at line 806 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:
$opsArray Same format as doOperations()
Returns:
Array List of FileOp objects
Exceptions:
MWException

Definition at line 1055 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:
$performOpsArray List of FileOp objects
Returns:
Array ('sh' => list of paths, 'ex' => list of paths)

Definition at line 1093 of file FileBackendStore.php.

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

Reimplemented from FileBackend.

Definition at line 1112 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:
$storagePathstring Storage path
Returns:
bool

Definition at line 1466 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 1358 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:
$paramsArray
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:
$paramsArray
Returns:
Status

Definition at line 328 of file FileBackendStore.php.

FileBackendStore::preloadCache ( array paths) [final]
See also:
FileBackend::preloadCache()

Reimplemented from FileBackend.

Definition at line 1301 of file FileBackendStore.php.

References $path, $s, array(), as, list, 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.

This loads the persistent cache values into the process cache.

Parameters:
$itemsArray
Returns:
void

Definition at line 1591 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:
$itemsArray List of storage paths or FileOps
Returns:
void

Definition at line 1692 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 1533 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:
$containerstring Container name
$relStoragePathstring Storage path relative to the container
Returns:
string|null Path or null if not valid

Reimplemented in SwiftFileBackend, and FSFileBackend.

Definition at line 1547 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 1380 of file FileBackendStore.php.

Referenced by preloadCache().

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

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

Parameters:
$optsarray Map of operation options
Returns:
Array

Definition at line 1739 of file FileBackendStore.php.

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

Set the cached info for a container.

Parameters:
$containerstring Resolved container name
$valmixed Information to cache

Definition at line 1567 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:
$pathstring Storage path
$valmixed Information to cache

Definition at line 1658 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:
$paramsArray
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 885 of file FileBackendStore.php.

Strip long HTTP headers from a file operation.

Parameters:
$oparray Same format as doOperation()
Returns:
Array

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