aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/sql_insert_buffer.php
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2013-07-14 11:34:58 -0400
committerIgor Wiedler <igor@wiedler.ch>2013-07-14 11:34:58 -0400
commitf6865dc33a8cedb7d21a64401ed80d2edbac36bd (patch)
tree66aa645c4d86636f0bce04a7125a7757a466b224 /phpBB/includes/db/sql_insert_buffer.php
parentfa3cdb6bf2cfdca9c26168bd258752718bc8a43f (diff)
parentc15bde161a93fc2abc48cacd7e5a71c682880e52 (diff)
downloadforums-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/db/sql_insert_buffer.php')
-rw-r--r--phpBB/includes/db/sql_insert_buffer.php150
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;
- }
-}