eZ Publish  [trunk]
eZDBFileHandlerMysqlBackend Class Reference

List of all members.

Public Member Functions

 __mkdir_p ($dir)
 _abortCacheGeneration ($generatingFilePath)
 Aborts the cache generation process by removing the .generating file.
 _begin ($fname=false)
 _checkCacheGenerationTimeout ($generatingFilePath, $generatingFileMtime)
 Checks if generation has timed out by looking for the .generating file and comparing its timestamp to the one assigned when the file was created.
 _cleanupFiledata ($filePath, $contentLength, $fname)
 _commit ($fname=false)
 _connect ($newLink=false)
 _copy ($srcFilePath, $dstFilePath, $fname=false)
 _copyInner ($srcFilePath, $dstFilePath, $fname, $metaData)
 _delete ($filePath, $insideOfTransaction=false, $fname=false)
 _deleteByDirList ($dirList, $commonPath, $commonSuffix, $fname=false)
 _deleteByDirListInner ($dirList, $commonPath, $commonSuffix, $fname)
 _deleteByLike ($like, $fname=false)
 _deleteByLikeInner ($like, $fname)
 _deleteByRegex ($regex, $fname=false)
 _deleteByRegexInner ($regex, $fname)
 _deleteByWildcard ($wildcard, $fname=false)
 _deleteByWildcardInner ($wildcard, $fname)
 _deleteInner ($filePath, $fname)
 _die ($msg, $sql=null)
 _disconnect ()
 Disconnects the handler from the database.
 _endCacheGeneration ($filePath, $generatingFilePath, $rename)
 Ends the cache generation for the current file: moves the (meta)data for the .generating file to the actual file, and removed the .generating.
 _error ($query, $fname, $error="Failed to execute SQL for function:")
 _exclusiveLock ($filePath, $fname=false)
 _exists ($filePath, $fname=false, $ignoreExpiredFiles=true)
 _fail ($value, $text=false)
 _fetch ($filePath, $uniqueName=false)
 Fetches the file $filePath from the database, saving it locally with its original name, or $uniqueName if given.
 _fetchContents ($filePath, $fname=false)
 _fetchMetadata ($filePath, $fname=false)
 _freeExclusiveLock ($fname=false)
 _freeSharedLock ($fname=false)
 _getFileList ($scopes=false, $excludeScopes=false)
 _handleErrorType ($res)
 _insert ($table, $array, $fname)
 _insertUpdate ($table, $array, $update, $fname, $reportError=true)
 _isFailure ($result)
 _linkCopy ($srcPath, $dstPath, $fname=false)
 _md5 ($value)
 _passThrough ($filePath, $startOffset=0, $length=false, $fname=false)
 Sends a binary file's content to the client.
 _protect ()
 _purge ($filePath, $onlyExpired=false, $expiry=false, $fname=false)
 _purgeByLike ($like, $onlyExpired=false, $limit=50, $expiry=false, $fname=false)
 _query ($query, $fname=false, $reportError=true)
 _quote ($value, $escapeUnderscoreWildcards=false)
 Make sure that $value is escaped and qouted according to type and returned as a string.
 _rename ($srcFilePath, $dstFilePath)
 _report ($query, $fname, $timeTaken, $numRows=false)
 Report SQL $query to debug system.
 _rollback ($fname=false)
 _selectOne ($query, $fname, $error=false, $debug=false, $fetchCall)
 _selectOneAssoc ($query, $fname, $error=false, $debug=false)
 _selectOneRow ($query, $fname, $error=false, $debug=false)
 _sharedLock ($filePath, $fname=false)
 _sqlList ($array)
 _startCacheGeneration ($filePath, $generatingFilePath)
 Attempts to begin cache generation by creating a new file named as the given filepath, suffixed with .generating.
 _store ($filePath, $datatype, $scope, $fname=false)
 _storeContents ($filePath, $contents, $scope, $datatype, $mtime=false, $fname=false)
 _storeContentsInner ($filePath, $contents, $scope, $datatype, $curTime, $fname)
 _storeInner ($filePath, $datatype, $scope, $fname)
 _verifyExclusiveLock ($filePath, $expiry, $curtime, $ttl, $fname=false)
 Uses a secondary database connection to check outside the transaction scope if a file has been generated during the current process execution.
 expiredFilesList ($scopes, $limit=array(0, 100), $expiry=false)
 Returns the list of expired files.

Static Public Member Functions

static nameTrunk ($filePath, $scope)
 Returns the name_trunk for a file path.

Public Attributes

 $db = null
 $dbparams
 $numQueries = 0
 $transactionCount = 0

Private Member Functions

 remainingCacheGenerationTime ($row)
 Returns the remaining time, in seconds, before the generating file times out.

Private Attributes

 $backendVerify = null

Detailed Description


Member Function Documentation

Aborts the cache generation process by removing the .generating file.

Parameters:
string$filePathReal cache file path
string$generatingFilePath.generating cache file path
Returns:
void

Definition at line 1683 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Starts a new transaction by executing a BEGIN call. If a transaction is already started nothing is executed.

Definition at line 1047 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _endCacheGeneration(), _exclusiveLock(), _protect(), _rename(), and _sharedLock().

eZDBFileHandlerMysqlBackend::_checkCacheGenerationTimeout ( generatingFilePath,
generatingFileMtime 
)

Checks if generation has timed out by looking for the .generating file and comparing its timestamp to the one assigned when the file was created.

Parameters:
string$generatingFilePath
int$generatingFileMtime
Returns:
bool true if the file didn't timeout, false otherwise

Definition at line 1623 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_cleanupFiledata ( filePath,
contentLength,
fname 
)

Helper method for removing leftover file data rows for the file path $filePath. Note: This should be run after insert/updating filedata entries.

Entries which are after $contentLength or which have different chunk offset than the defined chunk_size in $dbparams will be removed.

Parameters:
$filePathThe file path which was inserted/updated
$contentLengthThe length of the file data $fname Name of the function caller

Definition at line 1313 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copyInner(), _storeContentsInner(), and _storeInner().

Stops a current transaction and commits the changes by executing a COMMIT call. If the current transaction is a sub-transaction nothing is executed.

Definition at line 1062 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _endCacheGeneration(), _freeExclusiveLock(), _protect(), and _rename().

eZDBFileHandlerMysqlBackend::_copy ( srcFilePath,
dstFilePath,
fname = false 
)

Definition at line 123 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _linkCopy().

eZDBFileHandlerMysqlBackend::_copyInner ( srcFilePath,
dstFilePath,
fname,
metaData 
)
eZDBFileHandlerMysqlBackend::_delete ( filePath,
insideOfTransaction = false,
fname = false 
)

Definition at line 254 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copyInner().

eZDBFileHandlerMysqlBackend::_deleteByDirList ( dirList,
commonPath,
commonSuffix,
fname = false 
)
eZDBFileHandlerMysqlBackend::_deleteByDirListInner ( dirList,
commonPath,
commonSuffix,
fname 
)
eZDBFileHandlerMysqlBackend::_deleteInner ( filePath,
fname 
)

Definition at line 273 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _delete().

eZDBFileHandlerMysqlBackend::_die ( msg,
sql = null 
)

Definition at line 901 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _connect().

Disconnects the handler from the database.

Definition at line 114 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_endCacheGeneration ( filePath,
generatingFilePath,
rename 
)

Ends the cache generation for the current file: moves the (meta)data for the .generating file to the actual file, and removed the .generating.

Parameters:
string$filePath
Returns:
bool

Definition at line 1534 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_error ( query,
fname,
error = "Failed to execute SQL for function:" 
)

Prints error message $error to debug system.

Parameters:
$queryThe query that was attempted, will be printed if $error is false
$fnameThe function name that started the query, should contain relevant arguments in the text.
$errorThe error message, if this is an array the first element is the value to dump and the second the error header (for eZDebug::writeNotice). If this is false a generic message is shown.

Definition at line 1405 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _checkCacheGenerationTimeout(), _query(), and _selectOne().

eZDBFileHandlerMysqlBackend::_exclusiveLock ( filePath,
fname = false 
)

Locks the file entry for exclusive write access.

The locking is performed by trying to insert the entry with mtime set to -1, which means that file is not to be used. If it exists the mtime will be negated to mark it as deleted. This insert/update procedure will perform an exclusive lock of the row (InnoDB feature).

Note: All reads of the row must be done with LOCK IN SHARE MODE.

Definition at line 1128 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_exists ( filePath,
fname = false,
ignoreExpiredFiles = true 
)

Definition at line 383 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _rename().

eZDBFileHandlerMysqlBackend::_fail ( value,
text = false 
)

Creates an error object which can be read by some backend functions.

Parameters:
$valueThe value which is sent to the debug system.
$textThe text/header for the value.

Definition at line 1329 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _cleanupFiledata(), _copyInner(), _deleteByLikeInner(), _deleteByRegexInner(), _deleteByWildcardInner(), _deleteInner(), _exclusiveLock(), _purge(), _purgeByLike(), _sharedLock(), _storeContentsInner(), and _storeInner().

eZDBFileHandlerMysqlBackend::_fetch ( filePath,
uniqueName = false 
)

Fetches the file $filePath from the database, saving it locally with its original name, or $uniqueName if given.

Parameters:
string$filePath
string$uniqueName
Returns:
the file physical path, or false if fetch failed

Definition at line 440 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_fetchMetadata ( filePath,
fname = false 
)
Returns:
file metadata, or false if the file does not exist in database.

Definition at line 571 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copy(), _fetch(), _fetchContents(), _passThrough(), and _rename().

Frees a previously open exclusive-lock by commiting the current transaction.

Note: There is not checking to see if a lock is started, and if locking was done in an existing transaction nothing will happen.

Definition at line 1109 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Frees a previously open shared-lock by performing a rollback on the current transaction.

Note: There is not checking to see if a lock is started, and if locking was done in an existing transaction nothing will happen.

Definition at line 1094 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_getFileList ( scopes = false,
excludeScopes = false 
)
eZDBFileHandlerMysqlBackend::_insert ( table,
array,
fname 
)

Performs an insert of the given items in $array.

Parameters:
$tableName of table to execute insert on.
$arrayAssociative array with data to insert, the keys are the field names and the values will be quoted according to type.
$fnameName of caller.

Definition at line 920 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_insertUpdate ( table,
array,
update,
fname,
reportError = true 
)

Performs an insert of the given items in $array, if entry specified already exists the $update SQL is executed to update the entry.

Parameters:
$tableName of table to execute insert on.
$arrayAssociative array with data to insert, the keys are the field names and the values will be quoted according to type.
$updatePartial update SQL which is executed when entry exists.
$fnameName of caller.

Definition at line 941 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copyInner(), _exclusiveLock(), _storeContentsInner(), and _storeInner().

Checks if $result is a failure type and returns true if so, false otherwise.

A failure is either the value false or an error object of type eZMySQLBackendError.

Definition at line 1293 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copyInner(), _storeContentsInner(), and _storeInner().

eZDBFileHandlerMysqlBackend::_linkCopy ( srcPath,
dstPath,
fname = false 
)

Make sure that $value is escaped and qouted and turned into and MD5. The returned value can directly be put into SQLs.

Definition at line 1393 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _abortCacheGeneration(), _checkCacheGenerationTimeout(), _cleanupFiledata(), _copyInner(), _deleteInner(), _exists(), _fetch(), _fetchContents(), _fetchMetadata(), _passThrough(), _purge(), _sharedLock(), and _startCacheGeneration().

eZDBFileHandlerMysqlBackend::_passThrough ( filePath,
startOffset = 0,
length = false,
fname = false 
)

Sends a binary file's content to the client.

Parameters:
string$filePathFile path
int$startOffsetStarting offset
false | int$lengthLength to transmit, false means everything
false | string$fnameThe function name that started the query

Definition at line 600 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Protects a custom function with SQL queries in a database transaction, if the function reports an error the transaction is ROLLBACKed.

The first argument to the _protect() is the callback and the second is the name of the function (for query reporting). The remainder of arguments are sent to the callback.

A return value of false from the callback is considered a failure, any other value is returned from _protect(). For extended error handling call _fail() and return the value.

Definition at line 1234 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copy(), _delete(), _deleteByDirList(), _deleteByLike(), _deleteByRegex(), _deleteByWildcard(), _store(), and _storeContents().

eZDBFileHandlerMysqlBackend::_purge ( filePath,
onlyExpired = false,
expiry = false,
fname = false 
)

Purges meta-data and file-data for the file entry named $filePath from the database.

Definition at line 216 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _rename().

eZDBFileHandlerMysqlBackend::_purgeByLike ( like,
onlyExpired = false,
limit = 50,
expiry = false,
fname = false 
)

Purges meta-data and file-data for the matching files. Matching is done by passing the string $like to the LIKE statement in the SQL.

Definition at line 236 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_query ( query,
fname = false,
reportError = true 
)

Performs mysql query and returns mysql result. Times the sql execution, adds accumulator timings and reports SQL to debug.

Parameters:
$fnameThe function name that started the query, should contain relevant arguments in the text.

Definition at line 1341 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _abortCacheGeneration(), _begin(), _cleanupFiledata(), _commit(), _copyInner(), _deleteByDirListInner(), _deleteByLikeInner(), _deleteByRegexInner(), _deleteByWildcardInner(), _deleteInner(), _endCacheGeneration(), _fetch(), _fetchContents(), _getFileList(), _insert(), _insertUpdate(), _passThrough(), _purge(), _purgeByLike(), _rename(), _rollback(), _sharedLock(), _startCacheGeneration(), and expiredFilesList().

eZDBFileHandlerMysqlBackend::_quote ( value,
escapeUnderscoreWildcards = false 
)

Make sure that $value is escaped and qouted according to type and returned as a string.

Parameters:
string$valuea SQL parameter to escape
bool$escapeUnderscoreWildcardsSet to true to escape underscores as well to avoid them to act as wildcards Highly recommended for LIKE statements !
Returns:
string a string that can safely be used in SQL queries

Definition at line 1370 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _deleteByLikeInner(), _deleteByRegexInner(), _purgeByLike(), and _sqlList().

eZDBFileHandlerMysqlBackend::_rename ( srcFilePath,
dstFilePath 
)
eZDBFileHandlerMysqlBackend::_report ( query,
fname,
timeTaken,
numRows = false 
)

Report SQL $query to debug system.

Parameters:
string$fnameThe function name that started the query, should contain relevant arguments in the text.
int$timeTakenNumber of seconds the query + related operations took (as float).
int$numRowsNumber of affected rows.

Definition at line 1427 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _checkCacheGenerationTimeout(), _query(), and _selectOne().

Stops a current transaction and discards all changes by executing a ROLLBACK call. If the current transaction is a sub-transaction nothing is executed.

Definition at line 1077 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _endCacheGeneration(), _freeSharedLock(), _protect(), and _rename().

eZDBFileHandlerMysqlBackend::_selectOne ( query,
fname,
error = false,
debug = false,
fetchCall 
)

Common select method for doing a SELECT query which is passed in $query and fetching one row from the result. If there are more than one row it will fail and exit, if 0 it returns false.

Parameters:
$fnameThe function name that started the query, should contain relevant arguments in the text.
$errorSent to _error() in case of errors
$debugIf true it will display the fetched row in addition to the SQL.
$fetchCallThe callback to fetch the row.

Definition at line 1010 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _selectOneAssoc(), and _selectOneRow().

eZDBFileHandlerMysqlBackend::_selectOneAssoc ( query,
fname,
error = false,
debug = false 
)

Common select method for doing a SELECT query which is passed in $query and fetching one row from the result. If there are more than one row it will fail and exit, if 0 it returns false. The returned row is an associative array.

Parameters:
$fnameThe function name that started the query, should contain relevant arguments in the text.
$errorSent to _error() in case of errors
$debugIf true it will display the fetched row in addition to the SQL.

Definition at line 995 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _fetchMetadata().

eZDBFileHandlerMysqlBackend::_selectOneRow ( query,
fname,
error = false,
debug = false 
)

Common select method for doing a SELECT query which is passed in $query and fetching one row from the result. If there are more than one row it will fail and exit, if 0 it returns false. The returned row is a numerical array.

Parameters:
$fnameThe function name that started the query, should contain relevant arguments in the text.
$errorSent to _error() in case of errors
$debugIf true it will display the fetched row in addition to the SQL.

Definition at line 980 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _exists(), and _startCacheGeneration().

eZDBFileHandlerMysqlBackend::_sharedLock ( filePath,
fname = false 
)

Formats a list of entries as an SQL list which is separated by commas. Each entry in the list is quoted using _quote().

Definition at line 957 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _endCacheGeneration(), _insert(), _insertUpdate(), and expiredFilesList().

eZDBFileHandlerMysqlBackend::_startCacheGeneration ( filePath,
generatingFilePath 
)

Attempts to begin cache generation by creating a new file named as the given filepath, suffixed with .generating.

If the file already exists, insertion is not performed and false is returned (means that the file is already being generated)

Parameters:
string$filePath
Returns:
array array with 2 indexes: 'result', containing either ok or ko, and another index that depends on the result:
  • if result == 'ok', the 'mtime' index contains the generating file's mtime
  • if result == 'ko', the 'remaining' index contains the remaining generation time (time until timeout) in seconds

Definition at line 1455 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::_store ( filePath,
datatype,
scope,
fname = false 
)
eZDBFileHandlerMysqlBackend::_storeContents ( filePath,
contents,
scope,
datatype,
mtime = false,
fname = false 
)
eZDBFileHandlerMysqlBackend::_storeContentsInner ( filePath,
contents,
scope,
datatype,
curTime,
fname 
)
eZDBFileHandlerMysqlBackend::_storeInner ( filePath,
datatype,
scope,
fname 
)
eZDBFileHandlerMysqlBackend::_verifyExclusiveLock ( filePath,
expiry,
curtime,
ttl,
fname = false 
)

Uses a secondary database connection to check outside the transaction scope if a file has been generated during the current process execution.

Parameters:
string$filePath
int$expiry
int$curtime
int$ttl
string$fname
Returns:
bool false if the file exists and is not expired, true otherwise

Definition at line 1174 of file classes/clusterfilehandlers/dbbackends/mysql.php.

eZDBFileHandlerMysqlBackend::expiredFilesList ( scopes,
limit = array( 0, 100 ),
expiry = false 
)

Returns the list of expired files.

Parameters:
array$scopesArray of scopes to consider. At least one.
int$limitMax number of items. Set to false for unlimited.
int$expiryNumber of seconds, only items older than this will be returned.
Returns:
array(filepath)
Since:
4.3

Definition at line 1755 of file classes/clusterfilehandlers/dbbackends/mysql.php.

static eZDBFileHandlerMysqlBackend::nameTrunk ( filePath,
scope 
) [static]

Returns the name_trunk for a file path.

Parameters:
string$filePath
string$scope
Returns:
string

Definition at line 1695 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _copyInner(), _endCacheGeneration(), _storeContentsInner(), and _storeInner().

Returns the remaining time, in seconds, before the generating file times out.

Parameters:
resource$fileRow
Returns:
int Remaining generation seconds. A negative value indicates a timeout.

Definition at line 1736 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _startCacheGeneration().


Member Data Documentation

eZDBFileHandlerMysqlBackend::$backendVerify = null [private]
eZDBFileHandlerMysqlBackend::$db = null
eZDBFileHandlerMysqlBackend::$dbparams
eZDBFileHandlerMysqlBackend::$numQueries = 0

Definition at line 1779 of file classes/clusterfilehandlers/dbbackends/mysql.php.

Referenced by _report().

eZDBFileHandlerMysqlBackend::$transactionCount = 0

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