0
我正在做一個網站,這個網站有一個100MB的sqlite文件,這個文件不會被更新。如果sqlite文件內容存儲在共享內存中,如何使用php來訪問sqlite?
該DB文件只有一個表,這意味着每個請求將100MB的數據搜索,所以我擔心性能時,許多人認爲的網站
我打算使用內存來加快網站,但我沒有服務器的管理權限(包括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字符串,反序列化在每一個100MB的JSON請求可能會花費很多CPU和時間。 我可以直接將原始對象存儲到內存嗎?