我在我的应用程序中使用了一个Doctrine,但它似乎确实减慢了我的应用程序。像这样的简单代码:
$q = Doctrine_Query::create()
->select('co.id')
->from('CounterOnline co')
->where('co.user_id = ?', $user_id)
->orWhere('co.ip = ?', $ip)
->limit(1);
$counter_online = $q->fetchOne();
执行时需要0.025206089019775秒。我在我的应用程序中做了很多数据库查询,所以时间是一个糟糕的结果。
Doctrine真的那么慢,或者某种程度上我的配置可能搞砸了?缓存实际上不是一种选择,因为大多数服务器既没有安装memcache也没有安装APC。
答案 0 :(得分:3)
将查询放入运行查询100次的循环中,并比较执行时间。
如果它线性缩放(即从0.025206秒到2.5206秒),你的数据库或者你的Doctrine安装就会出现问题(而不是Doctrine本身,因为如果那种时间正常,没有人会使用它)。如果可能,请确保您的数据库已正确编入索引和/或标准化。
如果它非线性扩展(即从0.025206秒到0.0292秒),您的应用程序可能连接到远程数据库,而不是本地数据库,并且大部分执行时间是围绕建立该数据库的TCP / IP开销。连接到数据库 - 执行时间的小增量反映了查询本身运行正常。仔细检查应用程序的配置文件,确保它连接到正确的数据库。
答案 1 :(得分:2)
表现可能取决于很多事情:
但是,我想对于这样一个简单的查询,问题不应该是Doctrine。