Доска объявлений на 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 = @("','", $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 = @($ar_post_id,$ar_file_id);
   $st_id = ("','", $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. says:

    Классный плагин спасибо за его разработку, но:
    1.каптча так и продолжает плохо фунциклировать …
    2.и в следующей версии плагина исправте плз «Перевая картинка будет показанна в анонсе» слово ПЕРЕВАЯ на ПЕРВАЯ…

  2. admin says:

    Я вот смотрю у вас просто некоторые шрифты отображаются квадратиками, наверно просто стоит их удалить.
    Чтобы посмотреть какие это шрифты зайдите по адресу
    http://ili.com.ua/wp-content/plugins/ads-wordpress/ads_captcha.php
    Должно написать «Съешь еще этих мягких конфет + ряд цифр + и название шрифта»
    если этого нет надо сбросить кукисы (или другой броузер взять)
    и пощелкайте пока не найдете квадратики
    вот я уже вижу что у вас не отображается шрифт Decoder.ttf

  3. says:

    Спасибо, исправил…
    А можно добавить наш сайт к вам в список ссылок?
    Я где-то читал, что он всегда открыт? )))

  4. cooledit says:

    У меня такая проблема появилась:
    пользователи добавляют свои объявления, а через пару часов объявления пропадают, так как будто их никто и не писал…Не подскажите в чём может быть проблема?

  5. admin says:

    отключите опцию которая позволяет указывать время жизни
    может быть из за нее, а я проверю как она работает

  6. says:

    хорошо попробую…

  7. admin says:

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

  8. says:

    Вроде пока не пропадают, вчера одно добавили, ещё на месте — ещё не пропало, а если пропадает, оно савсэм удаляется или куда то перемещается?

  9. admin says:

    Удалятся насовсем.

  10. says:

    Знаешь, а перестали пропадать, спасиба, а ты нашёл ошибку у себя?

  11. admin says:

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

  12. Maxchen says:

    При предварительном просмотре глюк с переносом строк :(
    Просто объявление получается сплошной массой слов, но при публикации всё в норме.
    Как тут можно исправить?

  13. admin says:

    ну так тяжело сказать, надо посмотреть на глюк этот, может css можно подкрутить как-то

  14. Maxchen says:

    Это и на этом сайте есть http://ili.com.ua/?page_id=28
    думаю там в коде php что-то , а что — не додумаюсь ни как

  15. Андрей says:

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

  16. admin says:

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

  17. admin says:

    ну а что касается различных глюков у каждого свои настройки WP поэтому могут быть проблемы, в частности по поводу картинок — если вы изменили изменили папку для хранения картинок то картинок у вас не будет показывать, а также напоминаю что превьюшки для gif и bmp не генерируются, вообщем то уверенно могу сказать, что нормально обрезаются jpg и png

  18. Alexey says:

    Пытаюсь настроить плагин. в форме вместо капчи выводит красивыми шрифтами строку про конфеты с указанием шрифта.. собственно фразу-пароль не выводит..

    что могет быть?

  19. Андрей says:

    Это опять я. Спасибо, во всем разобралси (почти).

    Есть идейка.
    Существует плагинчик — ImageShack Offloader
    линк — scribu.net/wordpress/imageshack-offloader
    По идее он при добавлении поста с графикой заливает её автоматом на ImageShack, как я понял. Вот если бы прикрутить его к Вашему плагину для экономии места и трафика на хостинге. ;)

  20. Женя says:

    При отправке на модерацию, после заполнения формы и пред просмотра выдает сообщение «Принудительный останов цикла».
    Что-то со статусом pending ничего не нашел в коде.
    Записи с такой ошибкой не попадают в базу совсем. Wp 2.7.1

  21. Женя says:

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

  22. admin says:

    Да желательно заводить пользователя типа аноним или гость. Потом с объявлениями будет удобней работать.

  23. Константин says:

    Здаствуйте, простите что во 2 части тогда написал много а потом свёл вопрос на нет!
    У меня при добавлении не отображается капча. Она показывается как несуществующая картинка. Как это исправить?

  24. admin says:

    капча может не показываться если у вас не правильно стартует сессия,
    если просто обновить страницу она появляется?

  25. Константин says:

    Нет после обновления картинка не появляется.

  26. says:

    Автору респект за плагин :)

    Нашел в плагине такой баг или фичу, даж не знаю. :) Смысл в том что при добавлении двух обьявлений (в пустой блог) уже появляеться пейджинг на предыдущие записи. Если убрать в настройках плагина «Ads WordPress» чекбокс «Применить шаблоны постов», то все нормально — пейджинга на предыдущие записи нет.

    WP 2.7, активированые плагины Ads-WordPress и RusToLat.

    С чем это может быть связано или так должно быть?

  27. admin says:

    такс да есть такой глюк рабираюсь

  28. admin says:

    ух намучился уже с этой проблемой но вроде бы сейчас все правильно, в общем проблема возникает из за того, что при клонировании объекта если он содержал внутри себя другие объекты эти внутренние объекты не клонируются, а передаются по ссылке. О Как я завернул !
    Спасибо за помощь с ошибками.

  29. says:

    to admin, что и в каких файлах нужно поправить что бы корректно работать стало? или просто скачать заново плагин?

  30. admin says:

    загрузить новую версию плагина, обновления коснулись файла ads.php

  31. Михаил says:

    Активно использую данный плагин, спасибо!
    Правда очень напрягает следующий глюк:
    если зайти в режим редактирование объявление,
    а потом попытаться создать новое объявление,
    то все поля будт заполнены от последнего редактируемого объявления :(

  32. Михаил says:

    есть предложение:
    для уже зарегистрированного пользователя сделать возможность редактировать обявление без ввода дополнительного пароля.
    например:
    создаем страничку для редактирования как обычно,
    и если её открываем с параметром ?editpost=123,
    то, если пользователь зарегисрирован, сразу открывается это объявление в режиме редактирования.

    я для себя так сделал, но код кривенький получился.

  33. mix_iv says:

    Поставил плагин на версию 2.8.2, а при активации высакивает ошибка:

    Parse error: syntax error, unexpected T_ELSE in /usr/local/www/apache22/data/baby1/wordpress/wp-content/plugins/ads-wordpress/ads.php on line 525

  34. admin says:

    странно но на всякий случай перезалил архив попробуйте скачать и поставить заново

  35. admin says:

    2Михаил: да это хорошая идея для зареганых товарищей создавать ссылочку ==edit== чтоб с паролем не мучились
    спасибо за идею

  36. mix_iv says:

    Скачал плагин по этой ссылке: http://ili.com.ua/wp-content/uploads/2008/09/ads-wordpress.zip. Версия плагина 2.2.4. Ошибка осталось прежней… :(

  37. mix_iv says:

    Судя по ошибке я подозреваю, что что-то связано с mysql. И похоже что проблемы у меня. В чем может быть дело?

  38. mix_iv says:

    Сейчас поставил заново WP-RU 2.8.2, Ads-Wordpress 2.2.4. Ну не хочет он активироваться и все! :(

  39. admin says:

    ну не знаю всякое может быть, надо по месту разбираться

  40. says:

    Ставлю плагин на версию 2.8.4, при активации высакивает ошибка:
    Parse error: syntax error, unexpected T_ELSE in C:\xampp\htdocs\jupel\wp-content\plugins\ads-wordpress\ads.php on line 528

    Че за …?

    2.7.1 с предыдущей версией плагина, — работает отлично!

  41. admin says:

    странно я вот специально обновил до 2.8.4 никакой ошибки нету может что-то не до конца залилось?

  42. says:

    Привет. А как разместить вывод объявлений не на главной странице а на какой-нибудь другой, статичной…

  43. Firehorse says:

    Плагин отличный! Я его подточил под себя и очень доволен. Правда, обнаружился меленький баг с метками. Если вводить больше четырех слов (примерно 35-40 знаков) объявление не подается, выскакивает пустое поле. И в админке админа ничего не появляется в записях (посетителям разрешено сразу публиковать объявление). Причем я думал, что это результат моего копания в плагине. Скачал сегодня еще раз и залил- результат тот же. Пока не искал чего там и где ограничено в скрипте (и ограничено ли, может это проблемы совместимости с WP 2.9?), просто написал предупреждение для посетителей.

  44. Mayyan says:

    Та же проблема как и у всех
    Parse error: parse error in C:\Program Files\EasyPHP5.3.0\testeverything\wp-content\plugins\ads-wordpress\ads.php on line 540

  45. admin says:

    включите поддержку коротких тегов php < ? ?>
    пользуйтесь денвером

  46. admin says:

    да метки ограниченны именно так как вы написали
    не длиннее 26 знаков и не более 5 меток

  47. Pingback: Доска объявлений на WordPress - плагин ads_ilicomua чаcть 2 - Объявления

  48. Дмитрий says:

    подскажите как создать свои БЛОГ, ОЧЕНЬ ПРОШУ ВАС

  49. Алексей says:

    Здравствуйте! А в плагине планируется ввести платные функции? Например за поднятие объявления или выделение?

  50. admin says:

    ну если я добавлю такие функции то это будет отдельный модуль и платный :)
    уже об этом думал

Новости

  • Кабмин разрешил вырубать парки под застройку
  • В Украине была проведена проверка всех имеющихся в стране аттракционов
  • Проверка аттракционов на Украине
  • Украина принимает Евро-2012!
  • ЧП в международном аэропорту г. Харькова
  • Украинское образование не пасет задних
  • Новая модернизированная армия Украины
  • Комментарии


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

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

    Объявления

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

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

    Счетчики