Есть ли более быстрый способ анализа результатов, чем mysqli_fetch_assoc()? [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Есть ли более быстрый способ анализа результатов, чем mysqli_fetch_assoc()? [закрыто]

Сообщение Anonymous »

Хорошо, вот в чем дело. Я работаю над извлечением исторических данных из таблицы, которые будут отображаться для пользователя. Интерфейс — HTML/JS, сервер — PHP.
Итак, в нашей таблице более 90 столбцов. Это все данные от генератора постоянного тока (или двух) во время работы, обновляемые каждую минуту. Включает высокие, низкие и последние результаты за эту минуту, то есть 3–6 строк в минуту.
Прямо сейчас, если я хочу получить данные для поколения 0 за последнюю неделю, я используйте такой запрос:

Код: Выделить всё

SELECT voltage,current,timestamp,type FROM genset WHERE genID = 0 AND timestamp > '2024/11/20 11:43:00' AND timestamp < '2024/11/27 11:43:00' ORDER BY timestamp ASC;
Теперь запрос занимает секунды, несмотря на то, что база данных находится на SD-карте одноплатного компьютера, подключенного где-то к генератору. Но анализ данных в PHP... если я возьму данные за месяц для одного генератора, вы увидите 130 000 строк или около того. И для каждой отдельной строки я затем повторяю такой цикл, чтобы проанализировать и отформатировать ее:

Код: Выделить всё

while($row=mysqli_fetch_assoc($raw)) {
//parse and format the data
//...
}
Затем $reply возвращается во внешний интерфейс JS (все это было в HTTP POST, отправленном на внутренний PHP-скрипт), где он проходит через библиотеку диаграмм для отображения на пользователь.
Поэтому мой начальник хочет, чтобы это работало НАМНОГО быстрее. Чтобы улучшить воспринимаемую скорость, я разбил запрос на несколько более мелких частей и отобразил индикатор выполнения. Это устраняет ощущение «зависания», а также устраняет проблемы с максимальным временем выполнения PHP (которое я не могу изменить, что бы я ни делал). Но для устройства, которое находится где-то на вершине горы, это означает, что каждый POST увеличивает время задержки запроса пользователя.
Я думал, что mysqli_fetch_all() может решить проблему. Но оказывается, что это делает то же самое, что и цикл while! Так что это занимает столько же времени.
Конечно, я рассматривал вариант простого возврата $raw в JS, но я не знаю, способен ли JS вообще это проанализировать. Если это так, это было бы здорово. Я мог бы получить все данные — черт возьми, все данные для всех более чем 90 столбцов — и позволить клиенту анализировать их так, как им нравится.
Какой совет, ребята? Есть ли способ JS анализировать необработанные данные MySQLi? Есть ли более быстрый способ преобразовать эти данные в ассоциативный массив?

Подробнее здесь: https://stackoverflow.com/questions/792 ... etch-assoc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»