Insane Workout
Файлы в базе
Люди, которые хранят файлы в базе — больные извращенцы.
...
Если это MySql, хехе.
...
В Монго есть специальный механизм для хранения файлов в «базе», называется GridFS.
...
Полезностей у него минимум две:
1. Легкий бэкап кучи файлов с помощью репликации базы.
2. Все равно нужна таблица с метаинформацией к файлам, тут все хранится «вместе».
...
Цитата раз:
...
A: The nice thing about GridFS is that it streams the data back to the client, so you never need more than 4MB of memory.
Q: Now I know.
...
Цитата два:
...
There is currently no method that automatically streams chunks, but it would be fairly easy to write by querying the $grid->chunks collection.
...
Кто-то из них явно пиздит. Скорее всего, везде, кроме Советской России, файл и правда отдается чанками, но конкретно в PHP такого способа нет (MongoGridFSFile::getBytes() грузит файл целиком в память).
...
Пришлось делать как-то так, короче:
...
$cursor = $M[chunks]->find(array("files_id" => $img->file['_id']))->sort(array("n" => 1));
...
foreach($cursor as $chunk) echo $chunk['data']->bin;
...
В общем, я на очередном дейтинге проекте пока сделал «все картинки в базе», а там поглядим.
(еще 7 слов)