$SECTION_SQL=$dbTecDoc->query('SELECT DISTINCT
ART_ID, ART_ARTICLE_NR, SUP_BRAND, DES_TEXTS.TEX_TEXT AS STR_DES_TEXT, DES_TEXTS2.TEX_TEXT AS ART_COMPLETE_DES_TEXT
FROM LINK_GA_STR
INNER JOIN LINK_LA_TYP ON LAT_TYP_ID IN ('.implode(',',$TYP_ID_array).') AND
LAT_GA_ID = LGS_GA_ID
INNER JOIN LINK_ART ON LA_ID = LAT_LA_ID
INNER JOIN SEARCH_TREE ON STR_ID = LGS_STR_ID
INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = STR_DES_ID AND DESIGNATIONS.DES_LNG_ID = '.$LNG_ID.'
INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
INNER JOIN ARTICLES ON ART_ID = LA_ART_ID
INNER JOIN SUPPLIERS ON SUP_ID = ART_SUP_ID
INNER JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ART_COMPLETE_DES_ID
INNER JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID AND DESIGNATIONS2.DES_LNG_ID = '.$LNG_ID.'
WHERE
LGS_STR_ID = '.$SECTION_ID.'
ORDER BY
LA_ART_ID
LIMIT '.$LIMIT);
Который вытаскивает из базы все ART_ARTICLE_NR для $TYP_ID_array из категории SECTION_ID, артикулов очень много для родительской категории, порядка 2000. Дальше формируется массив который идет по базе с запчастями, в которой больше миллиона записей и все так же вытаскивает совпадения и третий запрос это
functionGetPropertys($ART_ID, $LNG_ID){global$dbTecDoc;
$model_par = '';
$param_SQL=$dbTecDoc->query("SELECT DES_TEXTS.TEX_TEXT AS CRITERIA_DES_TEXT,
IFNULL(DES_TEXTS2.TEX_TEXT, ACR_VALUE) AS CRITERIA_VALUE_TEXT
FROM ARTICLE_CRITERIA
LEFT JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ACR_KV_DES_ID
LEFT JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID
LEFT JOIN CRITERIA ON CRI_ID = ACR_CRI_ID
LEFT JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = CRI_DES_ID
LEFT JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
WHERE ACR_ART_ID = ".$ART_ID." AND
(DESIGNATIONS.DES_LNG_ID IS NULL OR DESIGNATIONS.DES_LNG_ID = ".$LNG_ID.") AND
(DESIGNATIONS2.DES_LNG_ID IS NULL OR DESIGNATIONS2.DES_LNG_ID = ".$LNG_ID.");");
while ( $model_param = $dbTecDoc->get_row($param_SQL) ) {
//$model_par .= $model_param['CRITERIA_DES_TEXT'] . ': ' . $model_param['CRITERIA_VALUE_TEXT'] . ';<br />';$model_par .= '<tr><td>' . $model_param['CRITERIA_DES_TEXT'] . '</td><td>' . $model_param['CRITERIA_VALUE_TEXT'] . '</td></tr>';
}
return'<table class="table table-striped table-hover"><tbody>' . $model_par . '</tbody></table>';
}
который уже вытаскивает параметры для товара.
Первый запрос из базы TecDoc отрабатывает около 7-15 секунд, второй не меньше и третий уже в сравнении с остальными гораздо меньше, но все равно эти цифры приводят в ужас. Учитывая что перед ними ещё есть запрос который формирует TYP_ID_array.
Собственно нужна помощь в оптимизации работы всех этих запросов. Скорее всего я изначально не правильно подхожу к структуре и однозначно говнокодю, потому что я знаю у кого это реализовано и работает это быстро у них.
Готов отблагодарить финансово за консультации.
он работает только когда $stockArray[$keyEmail]['mask'] не пустое, как можно добавить условие чтобы если $stockArray[$keyEmail]['mask'] не пустое то срабатывала
работает как раз с шагом по 20, но на выходе почему-то получаю такое Screenshot [prntscr.com]
по какой-то причине при каждом вызове хавает первую строку, если итераций 20 то все 20 раз он выведет пустую строку и потом кучу пустых
Запустил без ошибок так, но помоему он просто 1000 делит на 20 и 50 раз проходит по одному и тому же списку, хотя я думал что он будет шагать, никто не делал такие извращения?
Вроде так начало читать, но судя по значению $i оно не работает пошагово, в добавок ко всему ругается на
Call to undefined method PHPExcel_Worksheet::setReadFilter()
Нашёл setReadFilter в PHPExcel_Reader_Abstract, но почему его не видит PHPExcel_Worksheet в упор не пойму.
@phpdude, я её убрал, но скрипт как-то странно все равно работает
вроде как идет чтение, а потом начинает по новой (выводя при этом содержимое только первой ячейки) и когда зайобуется тупо прекращает.
А оно ругается на
Notice: Undefined variable: objReader in /var/www/!!!!/data/www/!!!!/excel_reader.php on line 44 Fatal error: Call to a member function setReadFilter() on a non-object in /var/www/!!!/data/www/!!!!/excel_reader.php on line 44
Смотрю в код, вроде все ровно, а как запустить хз, мож кто подскажет где туплю
showValues создает кнопку Купить, в html уже есть select с выбором параметров, при изменении в нем значении #selectsize определяет их и заменяет в кнопке купить data-fancybox-href, но прикол в том что делает это оно все максимум 1 раз после загрузки страницы. После того как кнопка Купить нажал, data-fancybox-href больше не заменяется и добавляется в корзину с тем же размером что и ранее. Хотя судя по экспектору кода в FF оно меняет значение, но в корзину упорно идет то что было первое добавлено. Оно как-то не так дружит с fancybox?
$(document).ready(function() {
functionshowValues() {var idquantity = $("input[name='cart_quantity']").val();
var idfield = $("input[name='products_id']").val();
var idvalue = $("#selectsize").val();
var idname = $("#selectsize").attr('name');
$("#addtocart").append('<button class="btn btn-lg btn-primary" id="addcart" data-fancybox-type="iframe" data-fancybox-href="index.php?products_id='+idfield+'&cart_quantity='+idquantity+'&action=add_product&'+idname+'='+idvalue+'"><span class="glyphicon glyphicon-shopping-cart"></span> Купить</button>');
returnfalse;
}
showValues();
$("#selectsize").change(function(){
var idquantity = $("input[name='cart_quantity']").val();
var idfield = $("input[name='products_id']").val();
var idvalue = $("#selectsize").val();
var idname = $("#selectsize").attr('name');
$("#addcart").attr('data-fancybox-href', 'index.php?products_id='+idfield+'&cart_quantity='+idquantity+'&action=add_product&'+idname+'='+idvalue+'');
});
$("#addcart").fancybox();
...
Выдает мне такое фаталити:
Fatal error: Call to a member function display_price() on a non-object in /ajax.base.php on line 35
function search_in_base($manufacturers_id, $value, $languages_id) {
...
$currencies->display_price(tep_xppp_getproductprice($search['products_id']), tep_get_tax_rate($search['products_tax_class_id']))
...
}
Что самое примечательное затеял я всю эту идею, чтобы не повторять один и тот же код, который без функции отлично работает, а в функции на том же месте не хочет.
Я как бы мысленно понимаю, что проблема в каком-то наследовании $currencies->..., порылся почитал советы типо должно быть $this->display_price... но т.к. я собака, не могу понять ничего.
Есть у кого нибудь кость бросить в меня?