Нашел проблему, но как исправить не знаю (( У меня кастомный файл shop.xml весит 76кб, если его удалить магаз грузится быстро, с ним ответ сервера очень долгий. Виной тому функция getProductsArrayPHP5, в частности код:
Код:
$custom_xml = new DOMDocument();
$custom_xml->load($CUSTOM_SHOP_XML);
$custom_products = $custom_xml->getElementsByTagName('product');
foreach($custom_products as $custom_product) {
$custom_code = $custom_product->getAttribute('code');
$FOUND = false;
foreach ($xml->getElementsByTagName('product') as $product)
{
if ($product->getAttribute('code') == $custom_code)
{
foreach($custom_product->childNodes as $custom_subnode) {
if (($custom_subnode->nodeType == XML_ELEMENT_NODE) && (!in_array($custom_subnode->nodeName, array('price', 'available'), true))) {
$nodes = $product->getElementsByTagName($custom_subnode->nodeName);
if ($nodes->length > 0) {
$product->removeChild($nodes->item(0));
}
$product->appendChild($xml->importNode($custom_subnode, true));
}
}
$FOUND = true;
break;
}
}
if ($ALLOW_THIRD_PARTY_PRODUCTS) {
if (!$FOUND) {
$products_node = $xml->getElementsByTagName('products');
$products_node = $products_node->item(0);
$products_node->appendChild($xml->importNode($custom_product, true));
}
}
}
он выполняется 7 раз, первый раз для загрузки основного товара, как я понял и остальные 6 раз для загрузки каждого похожего товара. И каждый раз выполняет перебор кастомного xml файла. Причем загрузка XML происходит относительно быстро, а вот цикл перебора массива товаров выполняется безобразно долго. Можно ли это дело как-то оптимизировать?