#php #mysql #mysqli
#php #mysql #mysqli
Вопрос:
Это ошибка, которую я получаю: Allowed memory size of 1258291200 bytes exhausted (tried to allocate 4294967296 bytes)
в этой строке: call_user_func_array(array($query, 'bind_result'), $params);
Как ни странно, я использовал этот точный скрипт десятки раз без проблем. Поэтому я думаю, что это может быть что-то в настройках моего сервера / базы данных, но ничего не могу придумать.
Вот полная функция:
public function q($query) {
if ($query = $this->_mysqli->prepare($query)) {
if (func_num_args() > 1) {
$x = func_get_args();
$args = array_merge(array(func_get_arg(1)),
array_slice($x, 2));
$args_ref = array();
foreach($args as $k => amp;$arg) {
$args_ref[$k] = amp;$arg;
}
call_user_func_array(array($query, 'bind_param'), $args_ref);
}
$query->execute();
if ($query->errno) {
if ($this->_debug) {
echo mysqli_error($this->_mysqli);
debug_print_backtrace();
}
return false;
}
if ($query->affected_rows > -1) {
return $query->affected_rows;
}
$params = array();
$meta = $query->result_metadata();
while ($field = $meta->fetch_field()) {
$params[] = amp;$row[$field->name];
}
call_user_func_array(array($query, 'bind_result'), $params);
$result = array();
while ($query->fetch()) {
$r = array();
foreach ($row as $key => $val) {
$r[$key] = $val;
}
$result[] = $r;
}
$query->close();
foreach($result as $key=>$resultField){
$result[$key] = (object) $resultField;
}
return $result;
} else {
if ($this->_debug) {
echo $this->_mysqli->error;
debug_print_backtrace();
}
return false;
}
}
Пожалуйста, не говорите мне увеличивать лимит памяти. Я ищу решение проблемы, а не симптом.
Ответ №1:
Оказывается, я использовал longtext
без необходимости и использовал всю свою память. Переключение на mediumtext
решило проблему.