diff options
| author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-13 22:47:41 -0700 | 
|---|---|---|
| committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-13 22:47:41 -0700 | 
| commit | 1e37d97909ccf52b08e2a809ea8a9365c824d8de (patch) | |
| tree | a260c846cb47713e72de11cfb9803d981ea6faaf /phpBB/includes/db/sql_insert_buffer.php | |
| parent | 4186c05bb4b97374392031a10b796e77b857afaf (diff) | |
| parent | 7030578bbe9e11c18b5becaf8b06e670e3c2e3cd (diff) | |
| download | forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.gz forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.bz2 forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.tar.xz forums-1e37d97909ccf52b08e2a809ea8a9365c824d8de.zip | |
Merge pull request #1559 from naderman/ticket/11698
[WIP][ticket/11698] Moving all autoloadable files to phpbb/
Diffstat (limited to 'phpBB/includes/db/sql_insert_buffer.php')
| -rw-r--r-- | phpBB/includes/db/sql_insert_buffer.php | 150 | 
1 files changed, 0 insertions, 150 deletions
| diff --git a/phpBB/includes/db/sql_insert_buffer.php b/phpBB/includes/db/sql_insert_buffer.php deleted file mode 100644 index c18f908429..0000000000 --- a/phpBB/includes/db/sql_insert_buffer.php +++ /dev/null @@ -1,150 +0,0 @@ -<?php -/** -* -* @package dbal -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ -	exit; -} - -/** -* Collects rows for insert into a database until the buffer size is reached. -* Then flushes the buffer to the database and starts over again. -* -* Benefits over collecting a (possibly huge) insert array and then using -* $db->sql_multi_insert() include: -* -*  - Going over max packet size of the database connection is usually prevented -*    because the data is submitted in batches. -* -*  - Reaching database connection timeout is usually prevented because -*    submission of batches talks to the database every now and then. -* -*  - Usage of less PHP memory because data no longer needed is discarded on -*    buffer flush. -* -* Attention: -* Please note that users of this class have to call flush() to flush the -* remaining rows to the database after their batch insert operation is -* finished. -* -* Usage: -* <code> -*	$buffer = new phpbb_db_sql_insert_buffer($db, 'test_table', 1234); -* -*	while (do_stuff()) -*	{ -*		$buffer->insert(array( -*			'column1' => 'value1', -*			'column2' => 'value2', -*		)); -*	} -* -*	$buffer->flush(); -* </code> -* -* @package dbal -*/ -class phpbb_db_sql_insert_buffer -{ -	/** @var phpbb_db_driver */ -	protected $db; - -	/** @var string */ -	protected $table_name; - -	/** @var int */ -	protected $max_buffered_rows; - -	/** @var array */ -	protected $buffer = array(); - -	/** -	* @param phpbb_db_driver $db -	* @param string          $table_name -	* @param int             $max_buffered_rows -	*/ -	public function __construct(phpbb_db_driver $db, $table_name, $max_buffered_rows = 500) -	{ -		$this->db = $db; -		$this->table_name = $table_name; -		$this->max_buffered_rows = $max_buffered_rows; -	} - -	/** -	* Inserts a single row into the buffer if multi insert is supported by the -	* database (otherwise an insert query is sent immediately). Then flushes -	* the buffer if the number of rows in the buffer is now greater than or -	* equal to $max_buffered_rows. -	* -	* @param array $row -	* -	* @return bool		True when some data was flushed to the database. -	*					False otherwise. -	*/ -	public function insert(array $row) -	{ -		$this->buffer[] = $row; - -		// Flush buffer if it is full or when DB does not support multi inserts. -		// In the later case, the buffer will always only contain one row. -		if (!$this->db->multi_insert || sizeof($this->buffer) >= $this->max_buffered_rows) -		{ -			return $this->flush(); -		} - -		return false; -	} - -	/** -	* Inserts a row set, i.e. an array of rows, by calling insert(). -	* -	* Please note that it is in most cases better to use insert() instead of -	* first building a huge rowset. Or at least sizeof($rows) should be kept -	* small. -	* -	* @param array $rows  -	* -	* @return bool		True when some data was flushed to the database. -	*					False otherwise. -	*/ -	public function insert_all(array $rows) -	{ -		// Using bitwise |= because PHP does not have logical ||= -		$result = 0; - -		foreach ($rows as $row) -		{ -			$result |= (int) $this->insert($row); -		} - -		return (bool) $result; -	} - -	/** -	* Flushes the buffer content to the DB and clears the buffer. -	* -	* @return bool		True when some data was flushed to the database. -	*					False otherwise. -	*/ -	public function flush() -	{ -		if (!empty($this->buffer)) -		{ -			$this->db->sql_multi_insert($this->table_name, $this->buffer); -			$this->buffer = array(); - -			return true; -		} - -		return false; -	} -} | 
