Я использую Zend_Cache_Core с Zend_Cache_Backend_File для кэширования результатов запросов, выполненных для модельного класса, который обращается к базе данных.
По сути, сами запросы должны формировать идентификатор, с помощью которого кешируются полученные результаты, единственная проблема в том, что они слишком длинные.Zend_Cache_Backend_File не выдает исключение, PHP не жалуется, но файл кэша не создается.
Я пришел к решению, которое вообще неэффективно, сохраняя любой выполненный запрос вместе савтоинкрементный идентификатор в отдельном файле, например:
0 - >> SELECT * FROM table 1 - >> SELECT * FROM table1, table2 2 - >> SELECT * FROM table WHERE foo = bar
Вы поняли идею;таким образом, у меня есть уникальный идентификатор для каждого запроса.Я очищаю кеш всякий раз, когда выполняется вставка, удаление или обновление.
Теперь я уверен, что вы видите потенциальное узкое место здесь, для любого теста, сохранения или выборки из кэша, два (или три, где нам нужно добавить новый идентификатор) запросов к файловой системе.Это может даже победить необходимость кеширования полностью.Так есть ли способ, которым я могу генерировать уникальный идентификатор, то есть гораздо более короткое представление, запросов в php без необходимости хранить их в файловой системе или в базе данных?