0
Memcacheでキーを設定できない問題があります。キャッシングにMemcacheでキーが設定されていません
$db=new db;
$my_test_cache=$db->query("SELECT `txt` FROM `lang` WHERE `pg`='front' LIMIT 2", 10);
とDBクラス:基本的に私は私のテストページを持っている
class db {
public function query($query, $ttl=30, $cache=true, $compr=false) {
global $memcache;
if ($cache==true) {
$res=$memcache->get(hash('md4', $query));
if ($res!=false) {
echo 'this is cached';
return $res;
}
else {
$res=mysql_query($query);
$memcache->set(hash('md4', $query), $res, $compr, $ttl);
echo 'this is not cached<hr>
Query: ',$query,'<br/>
Md4: ',hash('md4',$query),'<br/>';
var_dump($res);
return $res;
}
}
else return mysql_query($query);
unset($res, $query);
}
}
悲しいことに、これはすべてのリソースが正常に動作するように見えるにもかかわらず、キャッシュに任意のデータを設定しません。 AKA私のページ出力:これはクエリキャッシュされません
- は:SELECT *
lang
pg
= 'フロント' LIMIT 2 - MD4 FROM:34aa4e46a15413f5091dac79c9e86306
- リソース(7)タイプの(mysqlの結果)
誰も私がここで何をすべきかについて私にお伝えするほど親切ですか?
うわ、おかげで、私は完全にプログラミングから私の休憩後にPHPの構文を忘れてしまった...キャッシュ用として、私は保存したいですmysqlリソースを使用して、私は外部でそれを行う必要があるすべてを行うことができます。 :)ありがとう –
このスクリプトが終了すると、mysqlリソースは無意味になります。結果ハンドルはPER-SCRIPTであり、スクリプト自身の小さな私的な世界の外には存続しません。結果ハンドルを保存することができますが、他のスクリプトがそのハンドルをプルアップすると、そのスクリプトの実行コンテキストで無効なハンドルになります。 –
もう一つの疑問が生じます。私の 'lang'クエリは複数の行をフェッチすることになっていますが、どのようにそれらをすべて格納することが可能ですか? –