У меня есть функция, которая пересчитывает значение вычисляемых полей в заданных модулях.Это прекрасно работает для небольших модулей с небольшим количеством записей.Однако, когда я пытаюсь сделать это на больших модулях, таких как Контакты или Учетные записи, сохранение каждой записи занимает до трех секунд.
С более чем 100 000 записей это занимает 83 часа.
Это мой код.
$moduleList = array("Accounts", "Quotes");
if (!defined('sugarEntry') || !sugarEntry)
die('Not A Valid Entry Point');
require_once('include/utils.php');
require_once('include/export_utils.php');
foreach( $moduleList as $module) {
print "Updating $module...\n<br>";
$cnt = 0;
$moduleBean = BeanFactory::getBean($module);
$beanList = $moduleBean->get_full_list($order_by,$where);
if( $beanList != null ) {
foreach($beanList as $b) {
// These lines prevent the modified date and user from being changed.
$b->update_date_modified = false;
$b->update_modified_by = false;
$b->tracker_visibility = false;
$b->in_workflow = true;
$b->save();
$cnt++;
}
}
print "Finished updating: $cnt records.\n<br>";
Когда я регистрирую время, которое занимает каждая запись, становится ясно, что $b->save();
- это то, что занимает слишком много времени.
Есть ли способ ускорить это?