aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/sql_insert_buffer.php
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-07-23 11:13:25 -0500
committerNathan Guse <nathaniel.guse@gmail.com>2013-07-23 11:13:25 -0500
commit485c6ab3553f518b157610ee1144bbcbef63f797 (patch)
tree0c50392c4716511e118eeabd3f48cceb3ac7e906 /phpBB/includes/db/sql_insert_buffer.php
parent41d8bfa974900c9befbde06cc08060eb8a552ec8 (diff)
parentbe59885d5fd4b44f1c43994dec928eda816f9ab8 (diff)
downloadforums-485c6ab3553f518b157610ee1144bbcbef63f797.tar
forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.gz
forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.bz2
forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.xz
forums-485c6ab3553f518b157610ee1144bbcbef63f797.zip
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11667
# By Joas Schilling (224) and others # Via Andreas Fischer (23) and others * 'develop' of github.com:phpbb/phpbb3: (385 commits) [ticket/11734] Readd accidently removed language strings of forum permissions [ticket/11620] Whitespace and combine function into test_case [ticket/11620] Move check_ban_test functions to setUp/tearDown for clarity [ticket/11620] Changed incorrect global variable [ticket/11620] Minor indentation changes and comment clarity [ticket/11733] Fix "Illegal offset type" Warning caused by overall feed [ticket/11733] Add browse test for feed.php [ticket/11731] Remove static calls to captcha garbage collector [ticket/11728] Replace topic_approved with topic_visibility [ticket/11620] Expected and actual test conditions wrongly swapped [ticket/11620] Space between . in directory import concatenation [ticket/11620] Changes to match merge [ticket/11620] Changes for code guidelines consistency [ticket/11620] Fix a static calls to non-static for session captcha [ticket/11620] Cleanup creation_test that was renamed on a cherry-pick [ticket/11620] Update auth_provider for new interface [ticket/11620] Added garbage_collection_test [ticket/11620] Fixed check_ban_test errors with cache and ban warning message [ticket/11620] Fixed a typo on check_ban_test [ticket/11620] Refactored check_isvalid_test to use session_test_case ...
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;
- }
-}