Как использовать php для доступа к sqlite, если содержимое файла sqlite хранится в общей памяти?

Я делаю сайт, этот сайт имеет файл sqlite 100 МБ, этот файл не будет обновляться.

Этот файл базы данных содержит только одну таблицу, что означает, что каждый запрос будет искать данные размером 100 МБ, поэтому я беспокоюсь о производительности, когда многие люди просматривают веб-сайт.

Я планирую использовать память для ускорения работы сайта, но у меня нет прав администратора на сервер (включая mysql), поэтому я не могу установить программное обеспечение, такое как memcached redis. Мне нужно собственное решение / решение по умолчанию.

Поэтому я выбираю общую память, я пишу эту программу для кэширования всего файла sqlite в памяти.

Но я не знаю, как получить доступ к файлу в памяти, потому что PDO принимает только строку DSN

Как я могу получить доступ к базе данных в памяти?

$size=filesize ( "mydb.sqlite" );
$data=file_get_contents("mydb.sqlite");
$systemid = 12; // System ID for the shared memory segment
$mode = "c"; // Access mode
$permissions = 0755; // Permissions for the shared memory segment
$shmid = shmop_open($systemid, $mode, $permissions, $size);
shmop_write($shmid, $data, 0);// used in other process
$size = shmop_size($shmid);
$sqlite_file_data=shmop_read($shmid, 0, $size);

Если это невозможно, я перепишу эту программу, чтобы использовать stdClass для хранения всей базы данных,
чтобы сохранить объект php в разделяемой памяти, мне нужно преобразовать его в строку json, чтобы десериализовать json размером 100 МБ при каждом запросе может стоить много ресурсов процессора и времени.
Могу ли я напрямую сохранить необработанный объект в памяти?

0

Решение

Ваш файл будет уже кэширован в памяти из-за тривиального кеша файлов, так что не волнуйтесь.

Меня всегда удивляет, почему люди ожидают, что «многие люди будут просматривать веб-сайт», учитывая, что веб-сайт размещен на общем хостинге даже без доступа к базе данных.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]