У меня есть рейтинговая система, которая оценивает или оценивает около 20 полей вместе с другими данными. Проблема может быть скорее в проблеме дизайна, но торт, конечно, не справляется с этим, вызывая скачкообразную загрузку apache2.
У меня есть таблица с рекомендациями, которая представляет собой простой идентификатор, имя. Эта таблица заполнена чем-то вроде этого:
1 - правильно
2 - Неверно
3 - Отсутствует
4 - NA
В таблице обзора есть несколько полей, которые являются внешними ключами таблицы рекомендаций.
Поле 1 - Ссылочные рекомендации Field20 ID
Что я вижу, так это то, что каждый запрос страницы будет нагружать ЦП (apache2 потребляет где-то от 50-90% ЦП), даже когда я не захожу на страницу, которая будет ссылаться на отзывы.
Полагаю, это связано с тем, как торт обрабатывает привязки моделей. Я мог бы использовать что-то вроде enum, но это не так гибко.
Есть мысли о лучшем дизайне или о том, как отладить, почему торт заставляет Apache сходить с ума?
var $name = 'Review';
var $actsAs = array('Containable');
var $validate = array(
'service_request' => array(
'minLength' => array(
'rule' => array('minLength', 8),
'message' => 'Enter a valid Service Request Number'
),
'maxLength' => array(
'rule' => array('maxLength', 8),
'message' => 'Enter a valid Service Request Number'
),
'numeric' => array(
'rule' => 'numeric',
'message' => 'Enter a valid Service Request Number'
)
)
);
var $belongsTo = array(
'Employee' => array(
'className' => 'Employee',
'foreignKey' => 'reviewer_id',
),
'Reviewer' => array(
'className' => 'Employee',
'foreignKey' => 'reviewer_id'
),
'Reviewee' => array(
'className' => 'Employee',
'foreignKey' => 'reviewee_id'
),
'Rating' => array(
'className' => 'Rating',
'foreignKey' => 'rating_id',
),
'SrSummary' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_summary'
),
'SrProduct' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_product'
),
'SrVersion' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_version'
),
'SrRelease' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_release'
),
'SrComponent' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_component'
),
'SrTechnicalProblem' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_technical_problem'
),
'SrCommunicationOwner' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_communication_owner'
),
'SrCommunicationGroup' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_communication_group'
),
'SrOwnerGroup' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_owner_group'
),
'SrOwnerGroupGeo' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_owner_group_geo'
),
'SrStatus' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_status'
),
'SrSubstatus' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_substatus'
),
'SrSeverity' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_severity'
),
'SrPriority' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_priority'
),
'SrHwPlatform' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_hwplatform'
),
'SrBuild' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_build'
),
'SrSerial' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_serial'
),
'SrManualSerial' => array(
'className' => 'Recommendation',
'foreignKey' => 'sr_manual_serial'
),
'Note' => array(
'className' => 'Note',
'foreignKey' => 'note_id'
),
'Timing' => array(
'className' => 'Timing',
'foreignKey' => 'timing_id'
)
);