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.
This commit is contained in:
Dmitry Khomutov 2017-05-29 23:55:04 +07:00
parent ebb80eff10
commit e8fbaf08cb
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9

View file

@ -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 = '