Joker Board 3.0

да. медленно. возможно проц слабый на локалхосте. У меня селерон 2,3 ггц на винде делает гораздо медленнее дешевого хостинга, возможно по времени будет примерно также с 30 тыс объяв. У меня на демо лишь 540 объявлений. проверить не могу... нада базу качать с хоста.
выделенный сервер, проц Атлон 64 бита, 3000 мгц, памяти 1 гиг, mysql конфиг оттюнен, и всякие скрипты типа mysqltunner.pl, и tuning-primer.sh говорят что все хорошо
Все это работает на Центосе. Т.е. с аппаратной частью все нормально.
На сервере работает только этот скрипт.

Все нормально работало где-то до 15 тыс объявлений, а потом постепенно начались тормоза.

Могу базу сбросить.
 
попробуй убрать 50 объявлений. поставь 25. возможно поэтому. Я так понял этот скрипт выводит последние объявления на главной странице. У меня около 50 000 объявлений, хостинг дешевый. DOM загружается без запросов к базе, за 390 мсек, с Украинского хоста в Амстердам, а с запросом к БД (листинг категории, 30 объявлений) за 690 мсек. Т.е. запрос к базе составляет около 300 мсек. Но я шел к таким результатам очень долго, поначалу это время было около 2-2,5 сек.


Базу не надо. У меня есть. К тому же щас ее начнут копировать все, и будет куча дублежа контента.


Думаю GET запрос не повлияет на скорость, ведь выполняется только один из нескольких, конечно если index.php не весит под мегабайт. А вот куча файлов на жестком диске может сиграть злую шутку...


Еще зайди в phpMyadmin, и сделай оптимизацию всех таблиц. Иногда замечал что она влияет на производительность. Если есть счетчики-логгеры, такие как bbclone, убери их из скрипта, жуткий тормоз.
 
попробуй убрать 50 объявлений. поставь 25. возможно поэтому. Я так понял этот скрипт выводит последние объявления на главной странице. У меня около 50 000 объявлений, хостинг дешевый. DOM загружается без запросов к базе, за 390 мсек, с Украинского хоста в Амстердам, а с запросом к БД (листинг категории, 30 объявлений) за 690 мсек. Т.е. запрос к базе составляет около 300 мсек. Но я шел к таким результатам очень долго, поначалу это время было около 2-2,5 сек.

Да, это последние объявления. В общем, поставил LIMIT 10 объявлений, все равно "(10 всего, запрос занял 2.2188 сек.)"

.
Еще зайди в phpMyadmin, и сделай оптимизацию всех таблиц. Иногда замечал что она влияет на производительность. Если есть счетчики-логгеры, такие как bbclone, убери их из скрипта, жуткий тормоз.

Я уже делал это, ничего не помогает, надо наверное будет бить запрос на подзапросы, только так :(.

Странно что о данной проблеме все молчат, никто не набирал на этой доске разве столько объявлений ?

Добавлено kabasik: есть кнопка редактировать
 
Странно что о данной проблеме все молчат, никто не набирал на этой доске разве столько объявлений ?
Вот я и говорю.. у меня около 50 тыс.. никаких проблем. Шаманств с базой не делал. Вообще запросы к базе не менял.

Есть другая демо доска с псевдо объявлениями, там 180 тыс,пустой запрос за 0,87 сек. делал специально для тестов абсолютно стандартного джокера. запрос поиска. Если в поиске вводить какое нибудь одно слово, то 2,5 сек

Может кто знает, как разделить текст на 2 части в запросе $ads['text'] строго по словам или предложениям. я понимаю примерно что нужно сделать, но чтото не получается.

Добавлено kabasik: есть кнопка редактировать
 
Может кто знает, как разделить текст на 2 части в запросе $ads['text'] строго по словам или предложениям. я понимаю примерно что нужно сделать, но чтото не получается.

Разбиваешь с помощью $array = explode(" ", $ads['text']); на слова
А потом просто подсчитываешь count кол-во элементов в массиве и выводишь только половину.
Понятно что примитивно, но примерно так, предложения можно искать по знакам типа точки. и проверять в начале на их наличие
 
Разбиваешь с помощью $array = explode(" ", $ads['text']); на слова
А потом просто подсчитываешь count кол-во элементов в массиве и выводишь только половину.
Понятно что примитивно, но примерно так, предложения можно искать по знакам типа точки. и проверять в начале на их наличие
Нашел готовое решение, чётко работает.
Код:
<?php
//добавляем к тексту пробел в конце, т.к. по пробелам будет делиться текст, без этого последнее слово будет обрезаться
$desc=$sample_text." ";
//2 - на сколько делим, 0.02 - сглаживание (%)
$l=intval(strlen($desc)/2+strlen($desc)*0.02);
//убираем переводы строк
$desc=ereg_replace("[\r\n]"," ",$desc);
//делим текст
preg_match_all("/(.{1,$l})[ \n\r\t]+/",$desc,$descArray);
?>
 
<table><tr>
    <td><?=$descArray[1][0]?></td>
    <td><?=$descArray[1][1]?></td>
</tr></table>
 
вот прикол, короче надо было из запроса выкинуть group by и все заработало нормально
 
вот прикол, короче надо было из запроса выкинуть group by и все заработало нормально
Что то не в порядке. т.к. у меня и с этим запросом всё отлично работает.
 
Что то не в порядке. т.к. у меня и с этим запросом всё отлично работает.
да если подумать, то там группировка по id вообще не нужна, т.к. id инкремент по умолчанию и так, и группировка на больших базах как рах и тормозит. Уникальность и так не страдает в общем. Короче она там явно лишняя, убрал ее, теперь запрос где-то 0.001 сек занимает

а тормозило у меня еще и из-за STRAIGHT_JOIN в общем.
 
теперь запрос где-то 0.001 сек занимает
Ого! А убрал просто Group ID или еще что-то?

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

Слушай, прикольный у тебя такой запрос... я со 180 тыс им хостера повесил.. пришлось kill делать. Иначе 500 ошибка и всё висит. Убрал Групп ИД.. стало повеселее.. но отстой.. 11 секунд. Причем делаю это в файле last_add, там нет проблем с группировкой объявлений с фото. а вот в search.inc появляется глюк. Щас напишу тебе нормальный рабочий запрос. Может еще будет актуально. с группировкой.
........
Всё готово. Вобщем у меня на демо базе был глюк с облаком тегов, он аж сервак ложил пару раз. загрузка была в районе 2-3,5 сек. Там дурной запрос ORDER by RAND, отключил эту тучку тегов, и результат на лицо - 180 тыс объяв за 0,18 сек.
Вот 100% рабочий, используется в last_add (не поиск) :
Код:
SELECT jb_board.id AS board_id, jb_board.id_category, jb_board.title, jb_board.city, DATE_FORMAT(jb_board.date_add,'%d.%m.%Y') AS dateAdd, jb_board.checkbox_top, jb_board.checkbox_select, jb_board_cat.id, jb_board_cat.name_cat, jb_photo.photo_name, jb_city.city_name, jb_city.en_city_name FROM jb_board RIGHT JOIN jb_board_cat ON jb_board.id_category = jb_board_cat.id LEFT JOIN jb_city ON jb_board.city_id = jb_city.id LEFT JOIN jb_photo ON jb_board.id = jb_photo.id_message WHERE old_mess = 'old'  GROUP by board_id ORDER BY board_id DESC LIMIT 0, 50
 
Назад
Сверху