Пару дней назад я был на собеседовании для среднего/старшего PHP-разработчика (провалился). Мне задали каверзный вопрос, который все еще беспокоит меня.
Представьте, что мы используем PHP + Memcached и чрезвычайно нагруженный проект (около 100 обращений в секунду и более). Нам нужно выполнить огромный SQL-запрос, поэтому мы решили кэшировать его в Memcached. Теперь срок действия кеша истек, и нам нужно снова выполнить этот огромный запрос, чтобы его закешировать, но проблема в том, что все 100 пользователей попадают на сайт одновременно, поэтому теоретически сервер выполнит SQL-запрос 100 раз. в то же время кешировать его после, поэтому сервер упадет, я думаю.
Как мы могли решить эту проблему? Я думаю, что запрос должен выполниться один раз, а еще 99 человек должны остаться и дождаться данных, существующих в Memcached.