yniker
Новичок
Если возможность контролировать время работы MYSQL запроса? Или что за глюк в MYSQLI
Есть очень большая база данных.
1. Возможно, ли как-то указать, что вот этот MYSQL запрос выполнять не больше 2 минут и выдать ошибку пользователю?
(Никакого доступа к mysql и php настройкам пользователь не имеет.)
2.
Частичное решение этой задачи можно выполнить с помощью mysqli
Правда контроль будет не на время выполнение запроса, а на время отдачи от сервера большого кол-ва данных.
Странный глюк MYSQLI
-----------------------------------------------------------
if ($mysqli->multi_query($query))
{
if ($result = $mysqli->use_result())
{
$i=0;
while ($row = $result->fetch_row())
{
$i=$i+1;
if ($i==10) break;
}
// $result->close();
}
}
Если выборка очень большая, этот кусок кода сработает моментально. Так как фактически обрабатываем 10 записей всего.
НО ГЛЮК. $result->close();
если закрыть выборку так по идее правильно... $result->close();, программа судя по всему получает с сервера все же все данные. и тормозит при этом ничего не делая полезного?
Ясно что решить проблему можно используя limit, интересует почему же происходит торможение на операции закрытия.
+ конечно можно просто не освобождать $result->close();, но как-то плохо это...
Это баг? MYSQLI или фича?
Есть очень большая база данных.
1. Возможно, ли как-то указать, что вот этот MYSQL запрос выполнять не больше 2 минут и выдать ошибку пользователю?
(Никакого доступа к mysql и php настройкам пользователь не имеет.)
2.
Частичное решение этой задачи можно выполнить с помощью mysqli
Правда контроль будет не на время выполнение запроса, а на время отдачи от сервера большого кол-ва данных.
Странный глюк MYSQLI
-----------------------------------------------------------
if ($mysqli->multi_query($query))
{
if ($result = $mysqli->use_result())
{
$i=0;
while ($row = $result->fetch_row())
{
$i=$i+1;
if ($i==10) break;
}
// $result->close();
}
}
Если выборка очень большая, этот кусок кода сработает моментально. Так как фактически обрабатываем 10 записей всего.
НО ГЛЮК. $result->close();
если закрыть выборку так по идее правильно... $result->close();, программа судя по всему получает с сервера все же все данные. и тормозит при этом ничего не делая полезного?
Ясно что решить проблему можно используя limit, интересует почему же происходит торможение на операции закрытия.
+ конечно можно просто не освобождать $result->close();, но как-то плохо это...
Это баг? MYSQLI или фича?