2017-04-17 8 views
0

私はウェブサイトを作っていますが、このウェブサイトには10​​0MBのsqliteファイルがあります。このファイルは更新されません。sqliteファイルの内容が共有メモリに保存されている場合、phpを使ってsqliteにアクセスするには?

このDBファイルは、すべての要求は、100MBのデータを検索しますつまり、1つのテーブルのみを有する、非常に多くの人々は私がウェブサイトをスピードアップするためにメモリを使用する予定のウェブサイト

を表示したとき、私はパフォーマンスを心配したが、私はサーバーの管理権限(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); 

それが不可能な場合、私は共有メモリへのPHPのオブジェクトを格納するために、データベース全体を格納する をはstdClassを使用するには、このプログラムを書き換えるだろう、私はすべてに100MBのJSONをデシリアライズし、JSON文字列に変換する必要があります多くのCPUと時間がかかることがあります。 生のオブジェクトをメモリに直接保存できますか?

答えて

0

あなたのファイルは簡単なファイルキャッシュのために既にメモリにキャッシュされているので、心配しないでください。

私は、ウェブサイトがデータベースにアクセスしなくても共有ホスティングでホストされていると仮定して、なぜ人々は「多くの人がウェブサイトを閲覧する」と考えているのだろうかと疑問に思う。

関連する問題