我有一个与 . 完美运行的代码Doctrine_Core::HYDRATION_ARRAY
,但与Doctrine_Core::HYDRATION_RECORD
. 该页面加载大约两分钟,并显示标准浏览器错误消息,类似于
Connection to the server was lost during the page load.
(我已经本地化了浏览器,所以这不是确切的错误消息,而是翻译的)。
使用mysql命令行Show processlist
输出
+-----+--------+-----------------+--------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+--------+-----------------+--------+---------+------+-------+------------------+
| 698 | root | localhost:53899 | NULL | Query | 0 | NULL | show processlist |
| 753 | *user* | localhost:54202 | *db1* | Sleep | 102 | | NULL |
| 754 | *user* | localhost:54204 | *db2* | Sleep | 102 | | NULL |
+-----+--------+-----------------+--------+---------+------+-------+------------------+
代码本身:
$q = Doctrine_Query::create()
->select("fc.*")
->from("Card fc")
->leftJoin("fc.Fact f")
->where("f.deckid=?", $deck_id);
$card = $q->execute(array(), Doctrine_Core::HYDRATE_RECORD);
//Commenting the above line and uncommenting below line leads to an error
//$card= $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
所以我认为该查询没有填充正确的 SQL。$q->getSqlQuery()
但是,如果通过命令行或 phpMyAdmin 执行,输出正确的 SQL 可以完美运行。
服务器配置:
Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k mod_wsgi/3.3 Python/2.7.1 PHP/5.2.12
Mysql 5.1.40-community
一切都在本地主机上运行,所以这不是连接问题。
该特定查询的数据量非常小 - 大约十几个记录,因此与内存或时间限制无关。safe_mode
是off
,display_errors
是on
,error_reporting
是6135
。
有人可以指出我缺少的一些提示或警告吗?
更新:最奇怪的是它HYDRATION_RECORD
不时使用。
UPDATE2:当我试图从查询中获取一些东西时它崩溃了,例如getFirst()
。没有获取它可以工作,但我真的不需要我无法获取数据的查询表单。
UPDATE3:我已经解决了这个问题,但我仍然感兴趣,发生了什么。
更新 4:
sql查询:
SELECT f.id AS f__id, f.createdat AS f__createdat, f.updatedat AS f__updatedat,
f.flashcardmodelid AS f__flashcardmodelid, f.source AS f__source,
f.content AS f__content, f.md5 AS f__md5
FROM flashcard f
LEFT JOIN fact f2 ON f.id = f2.flashcardid AND (f2.deleted_at IS NULL)
WHERE (f2.deckid = 19413)
输出:
f__id f__createdat f__updatedat f__flashcardmodelid f__source f__content
245639 2011-08-05 20:00:00 2011-08-05 20:00:00 179 jpod lesson 261 {"source":"\u7f8e\u5473\u3057\u3044","target":"del...
因此,查询本身没问题,数据符合预期。你需要模型定义吗?
更新 5运行查询时HYDRATE_RECORD
httpd.exe
消耗 100% 的 CPU 内核之一。
最终更新不知道为什么,但现在它工作了......没有改变任何东西。当我在这个问题上悬赏时,它似乎只是在等待。:) 但是,由于我已经提供了赏金,任何关于两者之间的区别HYDRATE_ARRAY
和HYDRATE_RECORD
可能导致脚本崩溃的想法都值得赞赏。