Перейти к содержанию
Форум поддержки пользователей VamShop

Проблемы с кешированием запросов


Рекомендуемые сообщения

Сегодня хостер отключил магаз за загрузку процессора на сервере.

Загрузил сервер селект с выборкой товара, из письма:

Запросы: SELECT \n\t\tp.products_id as v_products_id, \n\t\tp.products_model as v_products_model, \n\t\tp.products_ima

Нагрузка: 99%

Провайдер написал: дело в скрипте магаза. Решили включить кеширование запросов.

На магазах начали валиться циклично:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/emarket/public_html/barbie/inc/vam_db_fetch_array.inc.php on line 39

Что можно сделать? Что это может быть?

Ссылка на сообщение
Поделиться на другие сайты

Unick

А какая версия VaM Shop.

Где именно выводится

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/emarket/public_html/barbie/inc/vam_db_fetch_array.inc.php on line 39

?!

На главной странице или на всех страницах.

Ссылка на сообщение
Поделиться на другие сайты

версия 1.35

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/emarket/public_html/barbie/inc/vam_db_fetch_array.inc.php on line 39

выводится на главной странице, на информационных страницах.

если переходить в категории, ошибка пропадает.

ну и выводится она только при включенном "кеширование запросов к БД"

Ссылка на сообщение
Поделиться на другие сайты

Unick

А есть возможность скачать архив с 1.42 версией и взять из него файлы.

К примеру:

/shop_content.php

/article_info.php

/articles.php

/templates/шаблон/source/boes/articles.php

Ссылка на сообщение
Поделиться на другие сайты

эта версия сейчас только клиентам доступна?

потому что, насколько мне понятно, в демке сейчас 1.40 лежит?

дело в том, что мы покупали магаз 1.35, пользователь GROL, но данные для авторизации уже того ;)

если что, пиши в личку

Ссылка на сообщение
Поделиться на другие сайты

Unick

Я вот только что демку обновил до 1.42 - vamhost.ru/vamshop-demo.zip

Вот ты ж на форум заходишь и на сайт под логином Unick

Зайди на vamshop.ru

Слева в боксе Вход введи логин и пароль свой, если нормально авторизуешься, затем справа вверху нажми Магазин и оформи заказ в магазине под новым логином, я тебе доступ открою.

Ссылка на сообщение
Поделиться на другие сайты

есть, авторизация нормально прошла.

загвоздка только с оформлением заказа - пришлось выбрать способ оплаты вебмани, а потом отказаться от оплаты, но вроде заказ должен был уйти

но перечесленные тобой файлы я пока могу и из демки надергать, да?

Ссылка на сообщение
Поделиться на другие сайты

Взяли файлы из демки, которые ты написал - не помогло.

В личку ушла ссылка на один из магазов, где вылезла эта проблема.

Сейчас включено кеширование запросов.

Как оказалось, эта ошибка не только на главной, а есть еще в некоторых категориях, например, разные товары и игрушки.

Но там 1 ворнинг, а на главной - 5.

Такое впечатление, что бока с целостностью данных.

И возможно на хостере проблемы были именно с этим.

Может быть, ты подскажешь хоть направление, куда можно рыть, потому что по ворнингу совершенно непонятно, что именно слетает.

Ссылка на сообщение
Поделиться на другие сайты

Unick

Просто я точно не помню какие файлы нужно заменить (в текущей версии такой ошибки быть не должно), я там много всяких правил.

Нужно методом тыка определить.

Попробуй тогда в /templates/шаблон/index.html

Поубирать все метки боксов кроме допустим {$box_CATEGORIES} и посмотреть, будет ли ошибка.

Если нет, возвращай метки боксов по одному и смотри в какой именно метке проблема.

или если хочешь, дай мне доступ на ftp я гляну.

Ссылка на сообщение
Поделиться на другие сайты

удалось отловить ошибку, отключаа боксы

но не в /templates/шаблон/index.html, а в template/source/boxes.php

в результате таки оказалась нарушена целостность данных - некоторые товары ссылаются не несуществующих производителей

только все равно кажется, что изначальная проблема с загрузкой процессора на сервере сюда отношения не имеет.

что ты можешь посоветовать по самой изначальной проблеме - переход на 1.42 поможет?

Ссылка на сообщение
Поделиться на другие сайты

А ты прбовал взять папку /templates/шаблон/soruce/boxes и переписать к себе.

Я просто все эти ошибки уже исправлял, вот о которой ты написал.

Нужно просто нужные файлы заменить и будет без ошибок.

Ссылка на сообщение
Поделиться на другие сайты

С боксами попробую.

Но сегодня оказалось, что ошибка с боксами - это мелочь, провайдер прислал точную причину, почему магазины вешают сервер - их сильно нагружает пакетная обработка изображений /admin/module_export.php, которой активно пользуются клиенты. Были ли какие-то улучшения в области этого модуля со времен 1.35? Что можно сделать, чтобы "разгрузить" этот скрипт?

Ссылка на сообщение
Поделиться на другие сайты

А почему собственно клиенты используют этот модуль и что за клиенты? Если посетители шопа то они никак не могут его использовать. А так действительно в силу своей специфики этот модуль создает нагрузку на сервер при обработки картинок. Тут уж ничего неподелаешь. Да и модуль то не часто используеться.

Ссылка на сообщение
Поделиться на другие сайты

Unick

Пока к сожалению модуль не исправлял, уже на форуме говорили о том, что пакетная обработка грузит сервер, но пока как выйти из ситуации я не знаю.

Если товары добавляются просто по одному через админку, временно можно просто скрыть пункт XT-Модули в Админке - Модули, что б не было видно пакетной обработки.

Но если что-то и удастся сделать, мне кажется кардинально снизить нагрузку на этот скрипт не получится, всё-таки обработка картинок, а тем более если много товаров, это очень ресурсоёмкая задача, насколько я понимаю.

Ссылка на сообщение
Поделиться на другие сайты

one

имеются в виду клиенты, которым мы делали магазины. некоторые сами управляют товаром.

Ну если так то судя по всему они постоянно запускают этот модуль что и грузит сервер и хостеру ненравиться а вот почему они это делают надо выяснить у них...

Ссылка на сообщение
Поделиться на другие сайты
  • 3 weeks later...

опять возникла на одном магазе проблема с кешированием запросов к БД.

вылазит при копировании товара с картинкой.

например, копируется один товар в одну категорию.

там по коду вызывается функция класса "категория" duplicate_product

а в ней , после проверки у копируемого товара наличия картинки, создается имя картинки у нового товара:

vamDBquery("UPDATE ".TABLE_PRODUCTS." SET products_image = '".$dup_products_image_name."' WHERE products_id = '".$dup_products_id."'");

когда включено кеширование, то в функции vam_db_queryCached валится строка

$record = vam_db_fetch_array($result)

при попытке взять результат вышеуказанного запроса.

чем полечить?

Ссылка на сообщение
Поделиться на другие сайты

Попробуй заменить:


$record = vam_db_fetch_array($result)
[/code] на:
[code]
$record = vam_db_fetch_array($result, true)

Подскажи, в какой конкретно файле эта строка находится?!

Ссылка на сообщение
Поделиться на другие сайты

ведь проблема-то в чем скорее всего, что функция mysql_query, которая внутри всех врапперов таки выполняет запрос на UPDATE, возвращает просто true

из определения:

>>Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или >>FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и >>FALSE в случае ошибки.

а функция vam_db_queryCached пытается работать с этим "true" как с указателем на результат запроса, применяя mysql_fetch_array ...

Ссылка на сообщение
Поделиться на другие сайты

Нет, я имею в виду вот этот:


vamDBquery("UPDATE ".TABLE_PRODUCTS." SET products_image = '".$dup_products_image_name."' WHERE products_id = '".$dup_products_id."'");
[/code]

Ссылка на сообщение
Поделиться на другие сайты

В каком файле этот код?

Подскажи, я гляну, в /admin/includes/classes/categories.php ?!

да в /admin/includes/classes/categories.php в function duplicate_product($src_products_id, $dest_categories_id)

Ссылка на сообщение
Поделиться на другие сайты

если поставить

 $record = vam_db_fetch_array($result, true), 
то

Warning: current() [function.current]: Passed variable is not an array or object in /home/emarket/public_html/teplo/inc/vam_db_fetch_array.inc.php on line 30

Warning: next() [function.next]: Passed variable is not an array or object in /home/emarket/public_html/teplo/inc/vam_db_fetch_array.inc.php on line 31

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/emarket/public_html/teplo/inc/vam_db_fetch_array.inc.php on line 39

Warning: current() [function.current]: Passed variable is not an array or object in /home/emarket/public_html/teplo/inc/vam_db_fetch_array.inc.php on line 30

Warning: next() [function.next]: Passed variable is not an array or object in /home/emarket/public_html/teplo/inc/vam_db_fetch_array.inc.php on line 31
[/code]

Ссылка на сообщение
Поделиться на другие сайты

Ты ж не там меняешь.

Нужно в /admin/includes/classes/categories.php заменить:


$product = vam_db_fetch_array($product_query);

[/code] на:
[code]
$product = vam_db_fetch_array($product_query, true);

Попробуй так.

В /inc/vam_db_featch_array.inc.php не нужно ничего менять.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...