Сегодня наконец додумался как полностью убрать тормоза от моего плагина опитимизировав 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>’;
В ближайшее время выложу это фильтр отделено.
Проверен на версии 2.7, не пугайтесь размера архива там просто набор шрифтов для генерации капчи.
Чтобы обновится вручную замените только файл ads.php ads_function.php, это не заденет ваши старые настройки.
Классный плагин спасибо за его разработку, но:
1.каптча так и продолжает плохо фунциклировать …
2.и в следующей версии плагина исправте плз «Перевая картинка будет показанна в анонсе» слово ПЕРЕВАЯ на ПЕРВАЯ…
Я вот смотрю у вас просто некоторые шрифты отображаются квадратиками, наверно просто стоит их удалить.
Чтобы посмотреть какие это шрифты зайдите по адресу
http://ili.com.ua/wp-content/plugins/ads-wordpress/ads_captcha.php
Должно написать «Съешь еще этих мягких конфет + ряд цифр + и название шрифта»
если этого нет надо сбросить кукисы (или другой броузер взять)
и пощелкайте пока не найдете квадратики
вот я уже вижу что у вас не отображается шрифт Decoder.ttf
Спасибо, исправил…
А можно добавить наш сайт к вам в список ссылок?
Я где-то читал, что он всегда открыт? )))
У меня такая проблема появилась:
пользователи добавляют свои объявления, а через пару часов объявления пропадают, так как будто их никто и не писал…Не подскажите в чём может быть проблема?
отключите опцию которая позволяет указывать время жизни
может быть из за нее, а я проверю как она работает
хорошо попробую…
расскажешь что там получилось, нашел тут одно спорное место все будет зависить от конфигурации MySQL
Вроде пока не пропадают, вчера одно добавили, ещё на месте — ещё не пропало, а если пропадает, оно савсэм удаляется или куда то перемещается?
Удалятся насовсем.
Знаешь, а перестали пропадать, спасиба, а ты нашёл ошибку у себя?
да тут такой тонкий момент получается, но вобсчем все должно работать
При предварительном просмотре глюк с переносом строк
Просто объявление получается сплошной массой слов, но при публикации всё в норме.
Как тут можно исправить?
ну так тяжело сказать, надо посмотреть на глюк этот, может css можно подкрутить как-то
Это и на этом сайте есть http://ili.com.ua/?page_id=28
думаю там в коде php что-то , а что — не додумаюсь ни как
Приятный плагинчик, сижу разбираюсь на локалке. Тоже объявы исчезают и картинку добавить немогу вначало страницы перекидывает.
Может что упустил, а как вывести как у Вас на сайте список городов?
Список городов делается вручную, но он должен совпадать с тем списком который используется при подаче объявления. В комплекте с плагином кстати идет несколько готовых списков городов.
ну а что касается различных глюков у каждого свои настройки WP поэтому могут быть проблемы, в частности по поводу картинок — если вы изменили изменили папку для хранения картинок то картинок у вас не будет показывать, а также напоминаю что превьюшки для gif и bmp не генерируются, вообщем то уверенно могу сказать, что нормально обрезаются jpg и png
Пытаюсь настроить плагин. в форме вместо капчи выводит красивыми шрифтами строку про конфеты с указанием шрифта.. собственно фразу-пароль не выводит..
что могет быть?
Это опять я. Спасибо, во всем разобралси (почти).
Есть идейка.
Существует плагинчик — ImageShack Offloader
линк — scribu.net/wordpress/imageshack-offloader
По идее он при добавлении поста с графикой заливает её автоматом на ImageShack, как я понял. Вот если бы прикрутить его к Вашему плагину для экономии места и трафика на хостинге.
При отправке на модерацию, после заполнения формы и пред просмотра выдает сообщение «Принудительный останов цикла».
Что-то со статусом pending ничего не нашел в коде.
Записи с такой ошибкой не попадают в базу совсем. Wp 2.7.1
Все понятно. Короче, для отправки на модерацию нужно обязательно завести пользователя. И в настройках указать, что от имени этого пользователя будет написан пост.
Да желательно заводить пользователя типа аноним или гость. Потом с объявлениями будет удобней работать.
Здаствуйте, простите что во 2 части тогда написал много а потом свёл вопрос на нет!
У меня при добавлении не отображается капча. Она показывается как несуществующая картинка. Как это исправить?
капча может не показываться если у вас не правильно стартует сессия,
если просто обновить страницу она появляется?
Нет после обновления картинка не появляется.
Автору респект за плагин
Нашел в плагине такой баг или фичу, даж не знаю. Смысл в том что при добавлении двух обьявлений (в пустой блог) уже появляеться пейджинг на предыдущие записи. Если убрать в настройках плагина «Ads WordPress» чекбокс «Применить шаблоны постов», то все нормально — пейджинга на предыдущие записи нет.
WP 2.7, активированые плагины Ads-WordPress и RusToLat.
С чем это может быть связано или так должно быть?
такс да есть такой глюк рабираюсь
ух намучился уже с этой проблемой но вроде бы сейчас все правильно, в общем проблема возникает из за того, что при клонировании объекта если он содержал внутри себя другие объекты эти внутренние объекты не клонируются, а передаются по ссылке. О Как я завернул !
Спасибо за помощь с ошибками.
to admin, что и в каких файлах нужно поправить что бы корректно работать стало? или просто скачать заново плагин?
загрузить новую версию плагина, обновления коснулись файла ads.php
Активно использую данный плагин, спасибо!
Правда очень напрягает следующий глюк:
если зайти в режим редактирование объявление,
а потом попытаться создать новое объявление,
то все поля будт заполнены от последнего редактируемого объявления
есть предложение:
для уже зарегистрированного пользователя сделать возможность редактировать обявление без ввода дополнительного пароля.
например:
создаем страничку для редактирования как обычно,
и если её открываем с параметром ?editpost=123,
то, если пользователь зарегисрирован, сразу открывается это объявление в режиме редактирования.
я для себя так сделал, но код кривенький получился.
Поставил плагин на версию 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
странно но на всякий случай перезалил архив попробуйте скачать и поставить заново
2Михаил: да это хорошая идея для зареганых товарищей создавать ссылочку ==edit== чтоб с паролем не мучились
спасибо за идею
Скачал плагин по этой ссылке: http://ili.com.ua/wp-content/uploads/2008/09/ads-wordpress.zip. Версия плагина 2.2.4. Ошибка осталось прежней…
Судя по ошибке я подозреваю, что что-то связано с mysql. И похоже что проблемы у меня. В чем может быть дело?
Сейчас поставил заново WP-RU 2.8.2, Ads-Wordpress 2.2.4. Ну не хочет он активироваться и все!
ну не знаю всякое может быть, надо по месту разбираться
Ставлю плагин на версию 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 с предыдущей версией плагина, — работает отлично!
странно я вот специально обновил до 2.8.4 никакой ошибки нету может что-то не до конца залилось?
Привет. А как разместить вывод объявлений не на главной странице а на какой-нибудь другой, статичной…
Плагин отличный! Я его подточил под себя и очень доволен. Правда, обнаружился меленький баг с метками. Если вводить больше четырех слов (примерно 35-40 знаков) объявление не подается, выскакивает пустое поле. И в админке админа ничего не появляется в записях (посетителям разрешено сразу публиковать объявление). Причем я думал, что это результат моего копания в плагине. Скачал сегодня еще раз и залил- результат тот же. Пока не искал чего там и где ограничено в скрипте (и ограничено ли, может это проблемы совместимости с WP 2.9?), просто написал предупреждение для посетителей.
Та же проблема как и у всех
Parse error: parse error in C:\Program Files\EasyPHP5.3.0\testeverything\wp-content\plugins\ads-wordpress\ads.php on line 540
включите поддержку коротких тегов php < ? ?>
пользуйтесь денвером
да метки ограниченны именно так как вы написали
не длиннее 26 знаков и не более 5 меток
Pingback: Доска объявлений на WordPress - плагин ads_ilicomua чаcть 2 - Объявления
подскажите как создать свои БЛОГ, ОЧЕНЬ ПРОШУ ВАС
Здравствуйте! А в плагине планируется ввести платные функции? Например за поднятие объявления или выделение?
ну если я добавлю такие функции то это будет отдельный модуль и платный
уже об этом думал