我正在开发一个基于 1.3.x 分支的遗留 CakePHP 应用程序,它大量使用了 Containable 行为,特别是深度嵌套的包含。
很明显,由于 CakePHP 框架处理深层包含下的查询的方式,这是一个巨大的性能问题。在一个请求中,我们有超过 10K 的查询,随后 Cake 将数据合并到一个数组中。
任何人都可以确认这些问题是否在 Cake 2.x 分支中得到修复,并且通过升级框架,我们可以在性能问题上取得进展。
由于时间限制,我们目前可以升级或重写系统的部分以不使用 Containable,但不能同时使用两者。
我更愿意升级,因为还有其他好处,但我需要确保我们的性能问题将得到解决。
深层嵌套包含示例
$this->Event->find('all', array(
'conditions' => $conditions,
'contain' => array(
'SessionDay' => array(
'Activity' => array(
'TimeSlot' => array(
'TimeSlotBooking',
'order' => array('slot_time' => 'asc')
)
)
),
'Activity' => array(
'TimeSlot' => array(
'TimeSlotBooking',
'order' => array('slot_time' => 'asc')
)
),
'Interview' => array(
'InterviewBooking',
'order' => array('interview_time' => 'asc')
),
'EventCode'
)
)
);