У меня есть следующий код, который генерирует изображение из базы данных, которое можно кэшировать в течение месяца.
У меня была атака бота, которая загружала изображение около 3000 раз в минуту. Это сломало мои веб-серверы, в то время как сервер базы данных был в порядке. (С тех пор я начал использовать облачный фронт для кэширования на пограничных серверах, что решает эту проблему)
Почему этот код вызывает сбой веб-серверов под нагрузкой, поскольку это просто индексированный запрос для LONGBLOB. Использует ли он много памяти?
$file_id = 1;
//Gets file from database based on id SELECT * FROM files WHERE file_id = 1
$file = $this->Appfile->get($file_id);
$this->load->helper('file');
header("Cache-Control: max-age=2592000");
header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+1 month')).' GMT');
header('Pragma: cache');
header("Content-type: ".get_mime_by_extension($file->file_name));
echo $file->file_data;