Первый и самый важный момент здесь заключается в том, что вы столкнетесь с проблемами масштабируемости / повреждения данных, пытаясь управлять данными в файлах - вот для чего нужны базы данных.
Можно создавать большие, быстрые системы, просто используя плоские файлы для хранения данных, но для реализации сложных очередей блокировки файлов требуется много сложного кода. Но учитывая альтернативу простого использования базы данных, это редко стоит усилий.
Разрешение пользователю указывать имя файла означает, что он сможет удалить любой файл, доступный для записи с помощью uid веб-сервера на вашем компьютере. Они также смогут развернуть свой собственный код PHP. Не очень хорошая идея.
Для быстрого и грязного решения (которое в какой-то момент в будущем потерпит ужасные и мучительные последствия ...).
function write_data($key, &$data)
{
$path=gen_path($key);
if (!is_dir(dirname($path)) {
mkdir(dirname($path), 0777, true);
}
return file_put_contents($path, serialize($data));
}
function get_data($key)
{
$path=gen_path($key);
return unserialize(file_get_contents($path));
}
function gen_path($key)
{
$key=md5($key);
return '/var/data/' . substr($key,0,2) . '/' . substr($key,2) . '.dat';
}