Помогите ускорить сниппет

<?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 раз
Добряков Алексей
27 декабря 2013, 06:35
modx.pro
650
0

Комментарии: 2

Василий Наумкин
27 декабря 2013, 11:19
0
Для начала установи и подключи 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'];

И далее по тексту.
    Добряков Алексей
    27 декабря 2013, 11:48
    0
    Спасибо большое как минимум в 2 раза быстрее стало работать. Теперь знаю как работать с pdo
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2