А вообще, в правиле не вижу [L] значит может быть просто множественный редерект по кругу (в т.ч. кэшированный)
или подгрузка страницы браузером заранее
Попробуй передавать ID последнего сообщения в чате и получать только те смс,которые больше последнего, а не 100 каждый раз
Поменяй формат на JSON, просто 2 вектора(массивы)-ники и сообщения.
пол секунды меняй на 5 секунд
и все
При загрузке файла есть в массиве $_FILES, tmp_name вычитай от-туда содержимое текстового файла и положи в базу как BLOB поле.
Но так можно тебе базу завалить, если написать скрипт, который будет заливать сильно большие файлы.. и вся система ляжет. По сути, храни лучше название файла.
Одновременная покупка - решайте транзакциями базы данных или накрайняк flock.
Какой смысл от такого статического метода, если он принимает все параметры конструктора?
Перенесите создание PDO объекта в публичный метод. Чтобы получилось примерно так:
$db = DB::getInstance();
$db->connect(host,port,db.....);
Еще лучше, если DB будет наследовать(extends) PDO.
затем сделайте интерфейс DbAware с методом setDb - для всех остальных классов, которые будут использовать базу данных. И засуньте это все в какой-то контейнер зависимостей.