我的問題是基本上,該原則在重新運行相同的查詢時不使用APC緩存的結果。正因爲如此,我得到了很長的執行時間。我在網上沒有發現類似的問題。laravel4學說不使用APC緩存
我的環境:
WAMP(32位)與PHP 5.4.16
上的Windows7。 遠程數據庫上的MySQL數據庫平均ping爲87ms
。 Laravel4通過作曲家安裝laravel-學說包:
doctrine/dbal - 2.4.x-dev
doctrine/orm - 2.4.x-dev
我的問題:
緩存學說查詢構建器不使用緩存的APC數據。
查詢:
$query = Doctrine::createQueryBuilder();
$query->select('e')->from("Persistent\Users\Experts\Expert", "e");
$this->prepareSort($sort, $query);
$query->orderBy($this->sortField, $this->sortVector);
//prepare paginator
$queryPaginator = new DoctrinePaginator($query);
$this->total = $queryPaginator->count();
return $queryPaginator ->getQuery()
->setResultCacheDriver(new ApcCache())
->useResultCache(true, 300, 'expertsearch')
->setFirstResult(0)
->setMaxResults(20)
->getResult();
結果:
的查詢需要17秒左右,因爲我的機器和數據庫服務器之間的距離來完成。
如上所示啓用緩存不會影響速度。
的APC使用緩存如下所示:
DoctrineNamespaceCacheKey[] 1 584 2013/10/30 08:33:08 2013/10/30 08:33:08 2013/10/30 08:33:08 None [Delete Now]
[expertsearch][1] 0 27880 2013/10/30 08:33:08 2013/10/30 08:33:08 2013/10/30 08:33:08 300 seconds [Delete Now]
[121cbb9b3c38e7d5a0c0e7b74c59e640][1] 0 3672 2013/10/30 08:33:08 2013/10/30 08:33:08 2013/10/30 08:33:08 None [Delete Now]
Webgrind顯示來電的數量沒有變化,以PDO相比,當在查詢生成器不使用高速緩存。
Function Invocation Count Total Self Cost Total Inclusive Cost
php::PDOStatement->execute 183 15932 15932
php::PDO->query 7 588 588
提供的不說,該文檔的URL'APC'不存儲查詢結果。事實上,它甚至展示了一個如何使用'APC'的例子:http://docs.doctrine-project.org/en/2.0.x/reference/caching.html#apc – Mark
你能否多開發一些答案? – Mark