2011-02-01 20 views
1


データベーステーブルに最新の20項目を示すブロックがウェブサイトにあります。
今、私はメモリに常駐する配列やオブジェクトを作成し、それから私のウェブサイトを閲覧するすべてのユーザーにアクセスする必要がありますか? PHPを使用してもかまいませんか?あなたがWindowsサーバにしている場合は、あなたの助けPHPを使用してメモリ内に共有オブジェクトを作成する方法は?

+0

を使用して、それを開きます。このオブジェクトは「クエリキャッシュ」と呼ばれ、DBデーモンのメモリに常駐しています –

+0

データベースにアクセスしたくありません!!毎晩変わる最新の20のアイテムを手に入れようとしています。だから私はDBにアクセスし、それにオーバーヘッドを避けたい – Alaa

+3

これは意味がありません。上記のように、Alaaは「毎瞬間」に変化すると言いますが、キャッシュがデータベースから更新されると言います(おそらく「毎瞬間」)...だからデータベースに直接照会してから仲介者をスキップするのはなぜですか?これがすでに数千のヒットを持つ巨大なアプリケーションであり、DBのオーバーヘッドが物事に目立つようなものでない限り、これは時期尚早の最適化の匂いがします。 – Andrew

答えて

1


あなたの貢献に感謝します。
私はそれを行う方法を見つけました。
代替PHPキャッシュ(APC)は、PHP用のフリーでオープンなopcodeキャッシュです。その目的は、キャッシングのフレームワークを提供することです。
は、このコードを試してみて、ページを更新するか、あなたはすでにそれを持っている別のブラウザ

 
<?php 
if (apc_exists('test')) 
    echo apc_fetch('test'); 
else{ 
    echo "Just Created "; 
    apc_store("test",time(),6666); 
    echo apc_fetch('test'); 
} 
?> 
2

ため

おかげでAPCまたはmemcacheのようなオプションを見て、またはWinCache。これらはすべて、データ/オブジェクトをキャッシュするためのオプションを提供します。

これは、データベースの最新の項目を表示する場合、あなたはそれ以外の場合は、データベース

+0

私はそれを更新します,,, 私は私のウェブサイトでdrupalを使用していますので、私はこのオブジェクトを挿入時にnodeapiを使用して更新します ところで...私のサーバはLinuxですCENTOS – Alaa

0

PHPと一致していないだろう、それを何かがそのデータベースに追加されるたびに更新する必要があると思いますのでステートレスであります異なるセッション間で変数を簡単に共有することはできません。 これは1つのトリックで行うことができます。 は今、あなたはテキストファイルに$sharedObjectを書くとテキストファイルを読んで、あなたからのデータを(取得していることをアンシリアライズすることができます$sharedObject であなたの$originalArrayの変数をシリアル化し得ることができ、アレイ$sharedObj = serialize ($originalArray) ; をシリアライズ、これらすべての値の配列を作成します。テキストファイル)と同じ配列を取得することができます。

まだ問題がある場合は教えてください。

+1

質問は今、 DBよりオーバーヘッドが多いですか? – Andrew

+0

@Andrew:確かに、私たちが 'memcached'に行く前に、小さなRAMZディスクを使用しました。ディスクが遅すぎたからです。それは、Webアプリケーションの "10k +同時ユーザー"のようなものでした。 – Piskvor

+0

それは良い考えのようには聞こえません。私は両方のDBクエリとmemcachedが繰り返し1)書き込みと2)ファイルシステムを読むより速いと思うだろう。 – Andrew

関連する問題