провёл для себя эксперимент выявить каким способом быстрее достать данные, например достать id=185 и его tv параметр price0 привожу листинги кодов
$q1 = $modx->newQuery('modTemplateVarResource');
$q1->where(array('tmplvarid' => '19'));
$q1->select(array('modTemplateVarResource.*'));
$q1->limit(1000);
$q1->prepare();
$q1->stmt->execute();
$tvres = $q1->stmt->fetchAll(PDO::FETCH_ASSOC);
//print_r($tvres);
//-------resources------------
$q = $modx->newQuery('modResource');
$q->where(array(
'context_key' => 'web'
));
$q->select(array(
'modResource.*'
));
$q->limit(1000);
$q->prepare();
$q->stmt->execute();
$result = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
$id = 185;//ресурс который ищем
foreach($result as $res){
if($res[id] == $id ){
foreach($tvres as $tv){
if($tv[contentid] == $id){
echo $res[pagetitle] . "\n";
echo $tv[value] . "\n";
}
}
}
}
$end_time = time() - 1272000000 + floatval(microtime()) - $begin_time;
echo $end_time; время потраченое 0.055360972881317 второй листинг 2) $begin_time = time() - 1272000000 + floatval(microtime());
$outHtmlAll='';
$modx->setLogLevel(3);
$namespace = 'shopmodx';
if(!$response = $modx->runProcessor('web/getdata',
array( "limit" => 1000
// Параметры
), array(
'processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/',
))){
print "Не удалось выполнить процессор";
return;
}
$res0 = $response->getResponse();
//print_r($res0);
$id = 185;//ресурс который ищем
echo $res0[object][$id][pagetitle]. "\n";
echo $res0[object][$id][tvs][price0][value]. "\n";
$end_time = time() - 1272000000 + floatval(microtime()) - $begin_time;
echo $end_time . "\n"; время потраченое 0.47229799628258