나는 다음과 같이 인스턴스에 세 phpcassa 연결 풀을 설정하는 데이터 액세스 클래스를 가지고 : 나는 최근에 약간의 성능을 수행 할 젠드의 PHP 서버에 기능을 추적하는 코드를 사용 phpcassa 연결 풀
try {
$this->cache = new ConnectionPool(
BSCACHE_KEYSPACE,
explode(',', BSCACHE_SERVERS),
null, null, null, null, null,
array(
'username' => BSCACHE_USERNAME,
'password' => BSCACHE_PASSWORD
)
);
$this->indexCache = new ConnectionPool(
INDEXCACHE_KEYSPACE,
explode(',', INDEXCACHE_SERVERS),
null, null, null, null, null,
array(
'username' => INDEXCACHE_USERNAME,
'password' => INDEXCACHE_PASSWORD
)
);
$this->metaCache = new ConnectionPool(
METACACHE_KEYSPACE,
explode(',', METACACHE_SERVERS),
null, null, null, null, null,
array(
'username' => METACACHE_USERNAME,
'password' => METACACHE_PASSWORD
)
);
} catch (Exception $e) {
return array($this->error['connection']);
}
이 클래스에 대한 감사를하고 세 개의 연결 풀 설정이 ~ 100ms를 소비하는 것으로 나타났습니다. 연결 설정은이 클래스의 인스턴스화마다 한 번 또는 두 번만 사용된다는 점에서 연결 설정을 잃어 버리는 데는 많은 시간이 걸린다.
누구나 이러한 연결 풀을 한 번 빌드하고 클래스의 인스턴스화간에 공유 할 수있는 영리한 트릭을 알고 있습니까? 어쩌면 더 진보 된 PHP 개발자가 바로 그 일을 할 수있는 간단한 방법이 있을까요?
는 UPDATE :는 "성공적으로"APC를 사용하여 연결 풀을 캐시 한 후 다음과 같이 읽어 영구 연결에 대한 자세한 내용을 읽고 그 phpcassa의 connection.php 파일 (라인 59 V 0.8.a.2를) 발견 :
$socket = new TSocket($host, $port);
... 음, TSocket에는 세 번째 (옵션) 매개 변수 $ persist가 있으며 기본값은 false입니다. 그러나 phpcassa에서 59 번째 줄을 변경하여 $ true를 true로 설정하면 회귀 테스트가 나에게 지옥으로가는 것입니다. 그들이 실패하는 방식으로 어딘가에 (아마도 카산드라 설정) 몇 가지 "최대 연결"제한을 두는 것처럼 보입니다. 그래서 나는 지금 그것에 대해 조사하고 있습니다.