Помогите ускорить сниппет
<?php
$childId = $modx->getChildIds($id,1);
$docA_id = $childId[0];
$docA = $modx->getObject('modResource',$childId[0]);
$priceA = $docA->getTVValue('price');
$descriptionA = $docA->get('description');
$descriptionA = str_replace(array("\r\n","\r","\n","\t"),'',$descriptionA);
if($descriptionA==''){$descriptionA = 'Информация ещё не готова';};
$employmentA = $docA->getTVValue('available');
$typeconstructionA = $docA->getTVValue('typeconstruction');
if($childId[1]!=''){
$docB_id = $childId[1];
$docB = $modx->getObject('modResource',$childId[1]);
$priceB = $docB->getTVValue('price');
$descriptionB = $docB->get('description');
$descriptionB = str_replace(array("\r\n","\r","\n","\t"),'',$descriptionB);
if($descriptionB==''){$descriptionB = 'Информация ещё не готова';};
$employmentB = $docB->getTVValue('available');
if($employmentB==''){$employmentB = '{}';};
$typeconstructionB = $docB->getTVValue('typeconstruction');
return '"idA":"'.$docA_id.'",
"priceA":"'.$priceA.'",
"descriptionA":"'.$descriptionA.'",
"employmentA":'.$employmentA.',
"typeconstructionA":"'.$typeconstructionA.'",
"albumA":"",
"albumB":"",
"idB":"'.$docB_id.'",
"priceB":"'.$priceB.'",
"descriptionB":"'.$descriptionB.'",
"employmentB":'.$employmentB.',
"typeconstructionB":"'.$typeconstructionB.'"';
}else{
return '"idA":"'.$docA_id.'",
"priceA":"'.$priceA.'",
"descriptionA":"'.$descriptionA.'",
"employmentA":'.$employmentA.',
"typeconstructionA":"'.$typeconstructionA.'",
"albumA":"",
"albumB":"",
"idB":"0",
"priceB":"0",
"descriptionB":"0",
"employmentB":{}';
};
Он выполняется 130 раз и это занимает от 10 до 18 секунд, можно ли это как не будь ускорить, помогите пожалуйста потому что в дальнейшем этот код будет выполнятся не 130 раз, но может доходить и до 2000 раз Комментарии: 2
Для начала установи и подключи pdoTools:
А затем замени
На вот это:
И далее по тексту.
$pdo = $modx->getService('pdoFetch');
А затем замени
$docA = $modx->getObject('modResource',$childId[0]);
$priceA = $docA->getTVValue('price');
$descriptionA = $docA->get('description');
$descriptionA = str_replace(array("\r\n","\r","\n","\t"),'',$descriptionA);
if($descriptionA==''){$descriptionA = 'Информация ещё не готова';};
$employmentA = $docA->getTVValue('available');
$typeconstructionA = $docA->getTVValue('typeconstruction');
На вот это:
$docA = $pdo->getObject('modResource', $childId[0], array(
'includeTVs' => 'price, available, typeconstruction'
));
$descriptionA = str_replace(array("\r\n","\r","\n","\t"),'',$docA['description']);
if($descriptionA==''){$descriptionA = 'Информация ещё не готова';};
$employmentA = $docA['available'];
$typeconstructionA = $docA['typeconstruction'];
И далее по тексту.
Спасибо большое как минимум в 2 раза быстрее стало работать. Теперь знаю как работать с pdo
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.