Доска объявлений на WordPress — плагин ads_ilicomua чаcть 3!

Сегодня наконец додумался как полностью убрать тормоза от моего плагина опитимизировав SQL запосы! Увеличение производительности в 10 раз! Вот только не могу понять как я раньше не додумался :(

Как это работало раньше:  сначала шла основная стандартная WP выборка постов, потом для каждого поста мы получали meta поля это +1 SELECT, затем поучали атачменты еще + 1 SELECT и затем для каждого атачмента получали его мета поля чтобы получить ссылку на превьюшки картинок итого на  каждый пост +3 запроса. Если у вас показывается 10 постов на странице то в среднем это +30-40 лишних запросов.

Теперь:  после того как получена основная выборка подключается фильтр posts_results собираем список ID всех записей делаем один запрос для того чтобы получить атачменты сразу для всех постов на странице

foreach ($posts as $key => $post) {
        $ar_post_id[] = $post->ID;
        $ar_link[$post->ID] = & $posts[$key];
   }
$st_id = @implode("','", $ar_post_id);
//сначала добываем атачменты
   $query = "SELECT $wpdb->posts.* FROM $wpdb->posts
WHERE  $wpdb->posts.post_parent IN('$st_id')
 AND $wpdb->posts.post_parent
   AND $wpdb->posts.post_type = 'attachment' ";
$files = $wpdb->get_results($query);

Далее обединяем в один массив ID постов и ID атачментов и получаем все мета поля для всех ID.

// складываем получаем общий список
   $ar_all_id = @array_merge($ar_post_id,$ar_file_id);
   $st_id = implode("','", $ar_all_id);
   $query = "SELECT * FROM $wpdb->postmeta WHERE post_id IN ('$st_id') ";
   $meta = $wpdb->get_results($query);

Вот так вот итого всего + 2 SQL запроса вместо 60 ! Причем посмотрел статистику SQL запросов эти два дополнительных SELECT выполняются в 10 раз быстрее чем основной запрос, где формируется выборка в соответствии с категорийе или тегом.
Даелее данные обрабатываются php сначала все мета данные раскидываются по записям и атачментам добавляем свойство $post->meta[$meta_key]=$meta_value; , а затем атачменты добавляются по своим записям $post->files[]=$file; ну это в общих чертах.
В общем скорость моей доски объявлений теперь практически ничем не уступает простому блогу.
Напоминая что все это будет работать если в настройках плагина включена опция применять шаблоны постов.
Если вы хотите самостоятельно обрабатывать объявления то все таки рекомендую вам воспользоваться этим фильтром подключив его в своем шаблоне в function.php, все мета данные и все картинки будут у вас сразу под рукой, а чтобы увидеть, что где лежит в теле основного цикла просто распечатайте:

echo ‘<pre>'; print_r( $post ); echo ‘</pre>';

В ближайшее время выложу это фильтр отделено.

Скачать ads-wordpress

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

Чтобы обновится вручную   замените только файл ads.php ads_function.php,  это не заденет ваши старые настройки.

Обсуждение на сайте:

Рубрика:  марта 18, 2009.
/ » » »


Похожие записи:

57 Responses to Доска объявлений на WordPress — плагин ads_ilicomua чаcть 3!

  1. Pingback: Ads WordPress 3.x - Объявления

  2. Иван says:

    Хочу такой модуль, пусть и платно :)

  3. Алексей says:

    Понятно, что будет платным, но, думаю, многие будут его покупать. Будем ждать.

  4. says:

    Скажите, а для 2.9 плагин идет? Или я неправильно делаю. Устанавливается как плагин, в настройках после активации есть ссылка на ads , но по ней нет перехода лальше. Может это из-за 2.9?

  5. admin says:

    с 2.9 идет

  6. says:

    как прикрутить эту доску к блогу? например — как пункт меню. спасибо

  7. Pingback:

Новости

  • Власть Киева экономит на школьниках
  • Украина и Польша начнут общий проект
  • Украинцы отдадут за газ всю зарплату
  • В Одессе откроется волонтерский центр
  • Россияне будут въезжать в Украину по загранпаспортам
  • В Харькове укрепляют границы с Россией
  • Планы прекратить транзит газа в Европу
  • Статьи

  • Строительные сетки
  • Утилизация отходов с предприятий и заводов
  • Сохраним чистоту Планеты: правильный вывоз мусора
  • Современные стеклянные конструкции. Перегородки
  • Борьба с болезнями и вредителями растений
  • Мультимодальні міжнародні перевезення вантажів у Львові
  • Выбор сайдинга — металлический или виниловый?
  • Остальное

  • Строительные сетки
  • Строительные сетки
  • Киевская власть займется недостроями
  • Различия в керамической плитке, полученной методом бикоттуры и монокоттуры
  • Шнековый (винтовой) погрузчик
  • Как правильно арендовать квартиру?
  • Как выбрать квартиру посуточно в Киеве?
  • Комментарии

    Партнеры

    .


    Расширенный поиск +

    Другие статьи

    Объявления

    Мои проекты на WordPress

    - специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой.
    - все о высоких технологиях - разработка, поддержка.

    Счетчики

    our blog