From e8fbaf08cb23f3b2a89f7aa2fdf6e3a01ce60b4e Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Mon, 29 May 2017 23:55:04 +0700 Subject: [PATCH] Reduced buffer_size for BuildErrorWriter. Number of prepared parameters must be less than 65535. See: https://stackoverflow.com/questions/40361164/pdoexception-sqlstatehy000-general-error-7-number-of-parameters-must-be-bet). Issue #66. --- src/PHPCensor/Store/BuildErrorWriter.php | 53 ++++++++++++++---------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/src/PHPCensor/Store/BuildErrorWriter.php b/src/PHPCensor/Store/BuildErrorWriter.php index a58cbaae..faadbc8e 100644 --- a/src/PHPCensor/Store/BuildErrorWriter.php +++ b/src/PHPCensor/Store/BuildErrorWriter.php @@ -15,19 +15,20 @@ class BuildErrorWriter /** @var array */ protected $errors = []; - /** @var int */ - protected $buffer_size; + /** + * @var int + * @see https://stackoverflow.com/questions/40361164/pdoexception-sqlstatehy000-general-error-7-number-of-parameters-must-be-bet + */ + protected $buffer_size = 5000; /** * BuildErrorWriter constructor. * * @param int $build_id - * @param int $buffer_size */ - public function __construct($build_id, $buffer_size = 10000) + public function __construct($build_id) { $this->build_id = $build_id; - $this->buffer_size = max((int) $buffer_size, 1); } /** @@ -49,20 +50,28 @@ class BuildErrorWriter * @param int $line_end * @param \DateTime $created_date */ - public function write($plugin, $message, $severity, $file = null, $line_start = null, $line_end = null, $created_date = null) - { + public function write( + $plugin, + $message, + $severity, + $file = null, + $line_start = null, + $line_end = null, + $created_date = null + ) { if (is_null($created_date)) { $created_date = new \DateTime(); } - $this->errors[] = array( - 'plugin' => (string)$plugin, - 'message' => (string)$message, - 'severity' => (int)$severity, - 'file' => !is_null($file) ? (string)$file : null, - 'line_start' => !is_null($line_start) ? (int)$line_start : null, - 'line_end' => !is_null($line_end) ? (int)$line_end : null, + $this->errors[] = [ + 'plugin' => (string)$plugin, + 'message' => (string)$message, + 'severity' => (int)$severity, + 'file' => !is_null($file) ? (string)$file : null, + 'line_start' => !is_null($line_start) ? (int)$line_start : null, + 'line_end' => !is_null($line_end) ? (int)$line_end : null, 'created_date' => $created_date->format('Y-m-d H:i:s'), - ); + ]; + if (count($this->errors) >= $this->buffer_size) { $this->flush(); } @@ -90,13 +99,13 @@ class BuildErrorWriter :message' . $i . ', :created_date' . $i . ' )'; - $insert_values_data['build_id' . $i] = $this->build_id; - $insert_values_data['plugin' . $i] = $error['plugin']; - $insert_values_data['file' . $i] = $error['file']; - $insert_values_data['line_start' . $i] = $error['line_start']; - $insert_values_data['line_end' . $i] = $error['line_end']; - $insert_values_data['severity' . $i] = $error['severity']; - $insert_values_data['message' . $i] = $error['message']; + $insert_values_data['build_id' . $i] = $this->build_id; + $insert_values_data['plugin' . $i] = $error['plugin']; + $insert_values_data['file' . $i] = $error['file']; + $insert_values_data['line_start' . $i] = $error['line_start']; + $insert_values_data['line_end' . $i] = $error['line_end']; + $insert_values_data['severity' . $i] = $error['severity']; + $insert_values_data['message' . $i] = $error['message']; $insert_values_data['created_date' . $i] = $error['created_date']; } $query = '