Так получилось что я работаю. Редкость в наше время, но я — работаю. И так получилось что моя работа (никто не догадался) связана с компьютерами. А ещё на работе есть сервера. А серверов больше одного, но между ними надо было меняться файлами. И заиспользовал администратор для этого распределённую файловую систему: на одном сервере файл создал, а он, пыщь-пыщь, появился на других. И всё было хорошо, но решили от этой распределённой файловой системы отказаться. Ну там стоило одному бы серверу упасть — она бы везде раком встала и бида-бида огорченье. И процессор жрала.
Настроил наш администратор модные rsync через линуксовый inotify и всё у всех стало хорошо. Файлы появляются на всех серверах, процессор отдыхает. Ну, только минус в том что на серверах файлы появляются не сразу, а секунд через 5. Или 10. А на одном проекте надо было чтобы ну вот мгновенно просто появлялся. Зато файл небольшой, несколько килобайтов.
Ну и было принято решение класть файл в мемкеш, а отдавать клиенту через nginx. Ну то есть nginx смотрит в урл, выдирает идентификатор и по составному ключу отдаёт файл как будто с диска. Имя файла только цифры, секурность, всё такое. Но только работало не всегда. Иногда работало, а иногда нет. И чаще нет.
Ну и вот читаем в похапе документации следущее:
Memcache::setCompressThreshold() enables automatic compression of large values. You can also use the memcache_set_compress_threshold() function.
То есть если класть большие данные, то можно включить функционал для автоматического пожимания этих данных в мемкеше. Ключевое слово “включить”. Но только оно всегда включено и если файл большой — он жмётся, а потом похапе его сам разжимает, а вот nginx не дебил и просто делает то что надо без тайных преобразований данных.
Такие вот дела. Удивительный мир программирования. А мудаков везде хватает.
2013.04.03 19:42