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' 쿼리는 여러 행을 가져와야한다고 가정합니다. 어떻게 모두 저장할 수 있습니까? –