geval 3 Опубликовано 28 февраля, 2011 Жалоба Share Опубликовано 28 февраля, 2011 Таблица : affiliate_clickthroughs содержит 103 000 строк..изза этого жутко безбожная нагрузка сервера.. 1) как это решить на будущее? видимо включена партнерская программа и подсчёт переходов 2) как удалять все данные, когда такой перегруз ( командой?) или может по крону сделать? Ссылка на сообщение Поделиться на другие сайты
YuraS 4 Опубликовано 28 февраля, 2011 Жалоба Share Опубликовано 28 февраля, 2011 http://yandex.ru/yandsearch?clid=14585&text=truncate+table+sql&lr=76 Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 28 февраля, 2011 Автор Жалоба Share Опубликовано 28 февраля, 2011 а в чём мораль? я сейчас удалил все эти данные.. и сразу нагрузка спала..но получается это надо каждую неделю делать вручную? 104 000 записей не шутки!! специальный админ- посмотрел сервер, mysql грузился на 150% ( команда top), он обнаружил что именно эта база данных грузила весь сервер, а уж определить остальное- дело логики и смекалки..но что вот с таким делать? Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 28 февраля, 2011 Автор Жалоба Share Опубликовано 28 февраля, 2011 хотя я так понял TRUNCATE чистит лучше- но полного синтаксиса для моего случая не нашёл.. мне посоветовали DELETE FROM affiliate_clickthroughs WHERE 1=1; а также DELETE FROM orders_products WHERE 1=1; все это добро занимало более 60 мегабайт! Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 28 февраля, 2011 Жалоба Share Опубликовано 28 февраля, 2011 Это кто-же такое тебе посоветовал? :) Не слушай школьников, пользуйся TRUNCATE для полной "зачистки" таблицы - она и быстрее несравнимо и память сразу освобождает. Для какого такого "твоего" случая не нашёл "полного синтаксиса"? http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html http://www.mysql.ru/docs/man/TRUNCATE.html Хотя сам подход странный - если таблица не нужна, если её чистить регулярно, может быть просто отказаться от её использования? Какой смысл в данных, которые накапливаются и удаляются одновременно? Впрочем, при ближайшем рассмотрении, оказалось что отказаться не так просто - клики записываются в таблицу не зависимо от того, активна партнёрка или нет, есть такой ref_id или нет. Нужно сделать две вещи: 1. Ввести глобальную константу - партнёрка в магазине активна или нет и проверять её во всех affiliate_*.php. 2. В affiliate_application_top.php добавить проверку на существование affiliate_ref, прежде чем записывать его заходы. Кстати, перед тем как чистить таблицу, посмотри кто спамит - как бы это не оказался бот яндекса :) Это же так просто - прописал у себя ссылки с рефом на партнёрский магазин, бот подхватил и давай индексировать :) А защиты по user agent нет. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 28 февраля, 2011 Жалоба Share Опубликовано 28 февраля, 2011 Цитата DELETE FROM orders_products WHERE 1=1; Тогда уж и заказы все нужно было "почистить" :) Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 28 февраля, 2011 Автор Жалоба Share Опубликовано 28 февраля, 2011 в данном случае партнёрка активна, магазин не мой, иначе бы вырубил конечно.. но там 15 партнеров, а бот яндекса считается тоже, именно поэтому везде у себя всё повырубал такое.. да кстати, если сделать защиту от яндекса как-то, может и спасёт ситуацию.. спасибо за ссылку, я просто не туда посмотрел- на первой странице.. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 28 февраля, 2011 Жалоба Share Опубликовано 28 февраля, 2011 Запретить регистрацию кликов ботов - работы на 1,5 мин. Только нужно всех ботов запрещать. И в любом случае нужно сначала проверить есть такой affiliate_ref, а потом уже регистрировать его действия. Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 28 февраля, 2011 Автор Жалоба Share Опубликовано 28 февраля, 2011 можете сделать такую оптимизацию-чтобы это всё добро не пухло? если да- то какова цена вопроса? Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 28 февраля, 2011 Автор Жалоба Share Опубликовано 28 февраля, 2011 Цитата Запретить регистрацию кликов ботов - работы на 1,5 мин. Только нужно всех ботов запрещать. И в любом случае нужно сначала проверить есть такой affiliate_ref, а потом уже регистрировать его действия. а могут быть проблемы с поисковиками в итоге? Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 2 марта, 2011 Жалоба Share Опубликовано 2 марта, 2011 Цитата а могут быть проблемы с поисковиками в итоге? Какие проблемы? Перестанут регистрироваться клики ботов в партнёрке? Да, такая проблема с ботами обязательно будет. Если это проблема ;) На самом деле страницы с ref - это дубли со всеми вытекающими. Их вообще запрещать к индексации нужно. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 2 марта, 2011 Жалоба Share Опубликовано 2 марта, 2011 Цитата можете сделать такую оптимизацию-чтобы это всё добро не пухло? если да- то какова цена вопроса? affiliate_application_top.php ищем if (($_GET['ref'] || $_POST['ref'])) { заменяем на if (($_GET['ref'] || $_POST['ref']) && vam_check_agent() == 0) { При этом параметр "Не показывать сессию в адресе паукам поисковых машин" (http://demo.vamhost.ru/admin/configuration.php?gID=16) должен быть установлен в true. Кстати, в application_top.php if (CHECK_CLIENT_AGENT) { стоит заменить на if (CHECK_CLIENT_AGENT=='true') { Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 12 октября, 2011 Автор Жалоба Share Опубликовано 12 октября, 2011 история повторяется..причем прежние методы уже не помогают( накопилось огромное количество заказов, версия 1,54 видимо как-то вызываются они и идет висяк.. все дело в том что это магазин семян, и там на каждый заказ по 10-20 и выше строк забирается.. в итоге десятки тысяч строк.. таблица заказов 50 мегабайт.. отсюда вопрос- было ли что-то в более новых версиях сделано для этого, или надо как-то запиливать вручную с помощью специалистов? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 12 октября, 2011 Жалоба Share Опубликовано 12 октября, 2011 В партнёрке ничего не делалалось. 50mb - это смешной размер. Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 12 октября, 2011 Автор Жалоба Share Опубликовано 12 октября, 2011 да тут висяки уже не от партнерки, а от обращения к заказам..к истории заказов.. в общем ко всем таблицам что так или иначе с заказами связаны.. они ведь вызываются как я понимаю не только в админке, а в момент оформления заказа, и если заказы не редкие..или в корзину кладут товар, то видимо идут жесткие тормоза Ссылка на сообщение Поделиться на другие сайты
Vladzimir 15 Опубликовано 12 октября, 2011 Жалоба Share Опубликовано 12 октября, 2011 А базу пытались оптимизировать? У меня в БД тоже десятки тысяч строк, но тормозов не наблюдаю. На странице карточки товара выводятся "так же заказали" и включен ли бокс "лидеры продаж"? Тормоза могут быть именно из-за них. Ну и адрес бы не помешал. Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 12 октября, 2011 Автор Жалоба Share Опубликовано 12 октября, 2011 оптимизировать в смысле через phpmyadmin ? когда так делали первый раз, какие-то там индексы врубил, вроде помогло тогда. сейчас уже подзабыл как это делается- полезу сейчас гляну. Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 12 октября, 2011 Автор Жалоба Share Опубликовано 12 октября, 2011 да боксы выводятся.. по идее точно, вот где обращения идут.. про также заказали Ссылка на сообщение Поделиться на другие сайты
Vladzimir 15 Опубликовано 12 октября, 2011 Жалоба Share Опубликовано 12 октября, 2011 У себя лично я жестко закешировал генерацию меню, топ10, так-же заказали. Нагрузки почти нет. Ссылка на сообщение Поделиться на другие сайты
geval 3 Опубликовано 12 октября, 2011 Автор Жалоба Share Опубликовано 12 октября, 2011 а как вы это сделали? то есть как это можно закэшировать? весьма интересуюсь и тоже хочу:-) Ссылка на сообщение Поделиться на другие сайты
Rodan 0 Опубликовано 13 октября, 2011 Жалоба Share Опубликовано 13 октября, 2011 Ага, было бы полезно. Поделитесь плиз :) Ссылка на сообщение Поделиться на другие сайты
Vladzimir 15 Опубликовано 13 октября, 2011 Жалоба Share Опубликовано 13 октября, 2011 Самый качественный способ - это загнать кеш в memcache. Сделать это проще всего в шаблоне. {php} $expire = 86400;//время жизни кеша в секундах $id=md5(getenv('REQUEST_URI')).'тип_иформации';//здесь необходимо изменить на название бокса, чтобы информация не пересекалась $memcache_obj = new Memcache; $memcache_obj->connect('127.0.0.1', 11211) or die("Could not connect"); if(($bufer=$memcache_obj->get($id)) === false) { ob_start(); {/php} {ЗДЕСЬ_МЕТКА_ВАШЕГО_БОКСА} {php} $bufer = ob_get_contents(); ob_end_clean(); $memcache_obj->set($id, $bufer, false, $expire); } $memcache_obj->close(); echo $bufer; {/php} [/CODE] Вместо мемкеша это все легко переделать на файловый кеш, но так на порядок быстрее. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения