Одна вещь, которую нужно рассмотреть при выборе бэкенда сессии, "как часто данные сессии изменяются"? Даже сайты с умеренным трафиком пострадают, если данные сессии будут изменены по каждому запросу, совершая много поездок базы данных, чтобы сохранить и получить данные.
В моей предыдущей работе мы использовали кэш-память в качестве бэкенда сессии исключительно, и это работало действительно хорошо. Наши административные команды прикладывают действительно большие усилия к созданию двух специальных memcached экземпляров, стабильных как камень, но после бита вертения с начальной настройкой, у нас не было прерываний операций бэкендов сессии.
Есть ли причина, по которой вы не можете использовать Win32 GetTempPath API?
Этот API доступен начиная с W2K и, следовательно, будет доступен для всех перечисленных вами целей.
Функция GetTempPath извлекает путь к каталогу, предназначенному для временных файлов. Эта функция заменяет функцию GetTempDrive.
DWORD GetTempPath(
DWORD nBufferLength, // size, in characters, of the buffer
LPTSTR lpBuffer // address of buffer for temp. path
);
Параметры
nBufferLength
Задает размер в символах строкового буфера, идентифицированного lpBuffer.
lpBuffer
Указывает на строковый буфер, который принимает строку с завершающим нулем, определяющую путь к временному файлу.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение представляет собой длину в символах строки, скопированной в lpBuffer, не включая завершающий нулевой символ. Если возвращаемое значение больше nBufferLength, возвращаемое значение - это размер буфера, необходимый для хранения пути. Если функция не работает, возвращаемое значение - ноль. Чтобы получить расширенную информацию об ошибке, вызовите GetLastError.
Примечания
Функция GetTempPath получает путь к временному файлу следующим образом:
GetTempPath не будет работать в Vista, если у пользователей нет прав администратора. Я столкнулся с этой проблемой прямо сейчас с одним из моих приложений.