diff options
| author | Igor Wiedler <igor@wiedler.ch> | 2013-07-14 11:34:58 -0400 |
|---|---|---|
| committer | Igor Wiedler <igor@wiedler.ch> | 2013-07-14 11:34:58 -0400 |
| commit | f6865dc33a8cedb7d21a64401ed80d2edbac36bd (patch) | |
| tree | 66aa645c4d86636f0bce04a7125a7757a466b224 /phpBB/includes/lock/db.php | |
| parent | fa3cdb6bf2cfdca9c26168bd258752718bc8a43f (diff) | |
| parent | c15bde161a93fc2abc48cacd7e5a71c682880e52 (diff) | |
| download | forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.gz forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.bz2 forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.xz forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.zip | |
Merge remote-tracking branch 'upstream/develop' into ticket/11574
* upstream/develop: (575 commits)
[ticket/11702] Fix forum_posts left over for link-click counts in viewforum.php
[ticket/11696] Move file to new directory
[ticket/11696] Rename constructor to __construct()
[ticket/11696] Remove manual loading of db_tools in extension controller test
[ticket/11696] Rename db_tools.php so it can be autoloaded
[ticket/11698] Moving all autoloadable files to phpbb/
[ticket/11694] Do not locate assets with root path
[ticket/11692] Don't update search_type in dev migration if already appended
[ticket/11675] Fix template loop
[ticket/11690] Old module class names may get autoloaded by class_exists
[ticket/9649] Display information on index for moderators on unapproved posts
[ticket/10999] Fix assets_version in ACP
[prep-release-3.0.12] More changelog items for the 3.0.12 release.
[ticket/11687] Add assets_version to phpbb_config
[ticket/11686] Not checking for phpBB Debug errors on functional tests
[ticket/11670] Consistency with logo: Replace "phpBB(tm)" with "phpBB(R)".
[ticket/11674] Do not include vendor folder if there are no dependencies.
[ticket/11685] Remove logout confirmation page
[ticket/11684] Remove useless confirmation page after login and admin login
[ticket/9657] Define user before injecting
...
Conflicts:
phpBB/includes/functions_container.php
phpBB/install/database_update.php
phpBB/install/index.php
Diffstat (limited to 'phpBB/includes/lock/db.php')
| -rw-r--r-- | phpBB/includes/lock/db.php | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/phpBB/includes/lock/db.php b/phpBB/includes/lock/db.php deleted file mode 100644 index 5cc0821aa0..0000000000 --- a/phpBB/includes/lock/db.php +++ /dev/null @@ -1,149 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Database locking class -* @package phpBB3 -*/ -class phpbb_lock_db -{ - /** - * Name of the config variable this lock uses - * @var string - */ - private $config_name; - - /** - * Unique identifier for this lock. - * - * @var string - */ - private $unique_id; - - /** - * Stores the state of this lock - * @var bool - */ - private $locked; - - /** - * The phpBB configuration - * @var phpbb_config - */ - private $config; - - /** - * A database connection - * @var phpbb_db_driver - */ - private $db; - - /** - * Creates a named released instance of the lock. - * - * You have to call acquire() to actually create the lock. - * - * @param string $config_name A config variable to be used for locking - * @param array $config The phpBB configuration - * @param phpbb_db_driver $db A database connection - */ - public function __construct($config_name, phpbb_config $config, phpbb_db_driver $db) - { - $this->config_name = $config_name; - $this->config = $config; - $this->db = $db; - } - - /** - * Tries to acquire the lock by updating - * the configuration variable in the database. - * - * As a lock may only be held by one process at a time, lock - * acquisition may fail if another process is holding the lock - * or if another process obtained the lock but never released it. - * Locks are forcibly released after a timeout of 1 hour. - * - * @return bool true if lock was acquired - * false otherwise - */ - public function acquire() - { - if ($this->locked) - { - return false; - } - - if (!isset($this->config[$this->config_name])) - { - $this->config->set($this->config_name, '0', false); - } - $lock_value = $this->config[$this->config_name]; - - // make sure lock cannot be acquired by multiple processes - if ($lock_value) - { - // if the other process is running more than an hour already we have to assume it - // aborted without cleaning the lock - $time = explode(' ', $lock_value); - $time = $time[0]; - - if ($time + 3600 >= time()) - { - return false; - } - } - - $this->unique_id = time() . ' ' . unique_id(); - - // try to update the config value, if it was already modified by another - // process we failed to acquire the lock. - $this->locked = $this->config->set_atomic($this->config_name, $lock_value, $this->unique_id, false); - - return $this->locked; - } - - /** - * Does this process own the lock? - * - * @return bool true if lock is owned - * false otherwise - */ - public function owns_lock() - { - return (bool) $this->locked; - } - - /** - * Releases the lock. - * - * The lock must have been previously obtained, that is, acquire() call - * was issued and returned true. - * - * Note: Attempting to release a lock that is already released, - * that is, calling release() multiple times, is harmless. - * - * @return null - */ - public function release() - { - if ($this->locked) - { - $this->config->set_atomic($this->config_name, $this->unique_id, '0', false); - $this->locked = false; - } - } -} |
