title
Description
Body
Есть ли такая возможность что бы не вмешивать в эту задачу php.
Перерыл интернет что то ничего не нашел на эту тему. Находил там работу nginx с mysql но совсем не понятно как реализовать данную задачу
Неактивен
Уточню задачу. Нужно хранить картинки в базе так как при хранении просто на фс то сильно перегружается винт постоянно нагружен по максимуму и в следствии висит сайт.
Вот только как это реализовать что бы не давать еще нагрузку на php я хз. Хотя может и стоит это сделать через php. Хоть так хоть так изображение будет полностью выгружатся в память
Неактивен
что-то я сомневаюсь, что нагрузка на винт большая из-за статики. много операций записи? имхо, настроить nginx с http кэшированием в большинстве случаев достаточно.
Неактивен
В обьщем там кроме картинок на диске кешировались еще много файлов. И нагрузка на винт была постоянно на максимум. Переписал кеш на mysql плюс подключил memcache сайт начал летать.
Добавлено спустя 7 минут 55 секунд:
Кстати был прикол с этим хешем. Хотел удалить папку кеша >20млн. файлов(Дождался при подсчете этой цыфры потом полюнул может там и 100 лямов) и тупонул выполнив несколько раз удаление папок через nohup. В общем почему то решил ребутнуть сервер но после ребута при запуске вообще подвис так как кеш хранился в папке tmp и система начала ее чистить. Пришлось загружатся в режиме востановления и переименовывать папку))
Досихпор не могу вычистить /tmp2. Поспешил я с хранением кеша в файлах. Решил секономить время
Неактивен
думаю, тут и mysql не лучшее решение. возможно, подошла бы какая-нибудь nosql база. например, couchdb. там можно сразу ссылку на файл в БД давать (встроенный http сервер), минуя nginx.
Неактивен
Gemorroj написал:
думаю, тут и mysql не лучшее решение. возможно, подошла бы какая-нибудь nosql база. например, couchdb. там можно сразу ссылку на файл в БД давать (встроенный http сервер), минуя nginx.
Я так понял речь идет о картинках или весь кеш сайта предлагаешь хранить на этой базе?
Кеш картинок пока что не трогал. Сейчас винт нагружен примерно на 5-10%. Сейчас задача выдачи картинок стоит такова:
Получаем ссылку на оригинал картинки с базы данных далее загружаем ее через курл в память + imagecreatefromstring($data) пошаманим немного и сохраняем в файл после выдаем в браузер.
Далее этим занимается nginx смотрит есть ли картинка в кеше если есть выдает в браузер, нет перенаправляет на данный скрипт. Пока что там 240т. картинок. работает быстро. Просто тогда было очень много операций чтения записи
Неактивен
Gemorroj написал:
так проблема в плохо оптимизированном php коде? ну так блин, с этого и начинал бы)
Не понял с чего ты взял что проблема в php. Была проблема из-за хранения данных на винте. вот функция кеша (старая)
|
|
А вот новая
|
|
Добавлено спустя 5 минут 24 секунды:
Просто когда все данные хранились на тупо по файлах. То увеличивалось время доступа к каждому файлу по мере их накопления.
Сейчас работает все гораздо быстрее. А если ты имеешь в виду за получение картинок то вот функция.
|
|
Неактивен
Можно было бы и выдавать картинку после сохранения с помощью nginx передав заголовок X-Accel-Redirect но хз че так не сделал. Может посчитал лишним.
Ну и собственно выдача в nginx
|
|
Неактивен
Gemorroj написал:
у тебя все файлы в 1 папке были? возможно проблема в этом
Ну да как раз в этом и была проблема. Плюс каждое видео хранилось в отдельном файле. Вопервых при поиске видео функция setCache вызывалась ~150 раз а это чтение +запись.
Короче пока что ввесь кеш на mysql + memcache а превюшки кешируются на винте все в одной папке. трогать пока что не буду. Результаты отклика устраивают. Посмотрю что через недельку другую будет.
Неактивен
Gemorroj написал:
ну вот раздели просто по папкам файлы.
например год/месяц/число/файл (2015/11/12/file.txt)
Ну насчет файлового кеша я уже разобрался. Перенес всю задачу на базу. А вот с превьюшками можно так сделать.
Неактивен