Слава, если вам проще пройти три цикла по трем запросам - чего вы хотите от тостерчан?
Чтобы они вам посоветовали лучший способ сделать неизвестно что?
EVGenyK_ch, вообще, при создании PDF важнее, как видит шрифты не Либра, а Ghostscript.
А домашняя директория www-data, вообще говоря, есть - это /var/www.
Только у него сплошь и рядом нет на нее прав...
Слава, так вы же ничего не пишете про задачу, кто вам что посоветует?
Элементарно, перебрав весь вывод запроса с группировкой (или без), можно накопить массив данных по школам, массив данных по ученикам и массив данных по оценкам, а потом обрабатывать их, как душе угодно. Но, скорее всего, можно меньше тратить память и более аккуратно получить нужное (какое - это вам лучше знать).
Кроме системных шрифтов, есть пользовательская папка ~/.fonts
Впрочем, от какого пользователя у вас запускается либра - еще вопрос.
Возможно, это www-data вебсервера без собственной папки.
Сведите обработку к функции, параметры которой - школа, ученик и оценка.
Возможно, методу класса, если нужно накапливать какое-то состояние при обработке.
Тогда вам не понадобятся никакие вложенные циклы.
GONJY MONJY, на Лине достаточно сконвертировать файл в UTF-8, читать его в UTF-8, получая int значения символов, использовать их как ключи и потом вывести символы UTF-8, соответствующие этим значениям.
Правда, с wifstream я никогда не работал, как это сделать им - не подскажу. Я бы читал голый поток и разбирал его любой библиотекой, работающей с UTF. Отдельной, которая находится за пару минут, или тем, в чем пишу программы обычно (у меня это wxWidgets).
GONJY MONJY, есть один классный способ: берешь Форточки и выкидываешь в форточку.
В Линуксах везде нормальный уникод, без копролитных CP866 в консоли, внутреннего представления строк системы (UTF16LE, если не ошибаюсь) и соответствующего результата, когда вы пытаетесь вывести их в UTF8.
Pista, фигню пишет твой ChatGPT. У современных систем проверка системного раздела и так прописана.
А "не помню как называется" - это как раз результат проверки: система увидела ошибки на диске и ожидала санкции человека на их исправление.
Можно воспользоваться ответом pfg21 - но четко понять одну простую штуку: сервер не зря перестраховывался, и если он будет править ошибки без тебя, ты можешь получить нерабочий сервер: он уже не будет просить запустить команду вручную, он молча сдохнет или молча же продолжит работать с тем, что получилось. Никак не сообщая о случившейся проблеме. Удачи в поиске ее причин, когда она станет заметной...
Это не костыльно, это базово.
Под капотом у int arr[10][10], который реализует компилятор, будет ровно то же самое - область памяти 10х10 и арифметика.
Одиночные запросы неизбежно тормозят уже хотя бы потому, что каждый раз под каждый запрос блокируется база, а потом пересчитываются индексы. Завернув это дело в транзакцию, уже можно увидеть ускорение.