- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Раз в час поменялись - повторили сортировку и так на автомате.
Проверить же не сложно - будет толк на вашей системе или нет, заодно оцените сколько выполняется сортировка и если после неё запрос в 15 сек выполнится за 7 сек - это уже результат.
Да оно уже сейчас выполняется доли секунды. Опять же говорю сейчас проблема лишь как быстро считать все ID из категории 1 раз и всё.
Да оно уже сейчас выполняется доли секунды. Опять же говорю сейчас проблема лишь как быстро считать все ID из категории 1 раз и всё.
АА :) чета я пропустил сообщение что проблема решена :)
АА :) чета я пропустил сообщение что проблема решена :)
Вот тут решение проблемы: /ru/forum/comment/10080098
тогда смысла нет тащить и сортировать массив. просто в цикле отсчитайте нужную страницу.
Да какая разница? Это нужно count вводить. А толку то? ну будет выполняться на доли секунды меньше и всё. PHP же в памяти выполняется.
не нужен никакой count.
еще раз идея :
у вас известен номер страницы $page, число документов на странице $per_page
1 Запускаете запрос на получение всех id постов по всей категории отсортированных в нужном порядке. Запрос небуферезированный. Он не выполняется, а результат его сразу берется из кеша.
2 Пропускаете $page*$per_page строк с помощью функции mysql_data_seek не мучая php 37710 итерациями, как раньше. На php никакие строки не поступают.
3 считываете $per_page следующих строк в цикле - вот это ваши id документов.
(3a тут же делаете mysql_free_result , чтобы максимально быстро снять блокировку чтения с кеша запросов)
4 запрашиваете все документы обычным запросом WHERE ID in (..).
2 Пропускаете $page*$per_page строк с помощью функции mysql_data_seek не мучая php 37710 итерациями, как раньше. На php никакие строки не поступают.
ввести такое?
while ($rowclubs = @mysql_fetch_array($result))
{
if (($i>5*25)||$i<(5*25+25)) {
$arrayid[]=$rowclubs['id'];
}
$i++;
}
Ну мы тем самым лишь уменьшаем сам массив, это опять же доли секунды.
---------- Добавлено 24.02.2012 в 03:33 ----------
Да конечно.
1.Из мануала, Замечание:
Однако, плюсы использования mysql_unbuffered_query() имеют свою цену: вы не можете использовать функции mysql_num_rows() и mysql_data_seek() с результатом запроса, возвращённым этой функцией, пока не будут получены все ряды. Кроме того, вы должны будете обработать все ряды запроса до отправки нового запроса, используя тот же link_identifier.
2. Если мы даже применим mysql_data_seek, то нам НУЖНО количество ВСЕХ записей для составления листинга.
LEOnidUKG, ну не получается (c) :) Похоже нет способа даже в обычном C API не тащить на клиента все записи и пользоваться data_seek. А могла бы быть интересная возможность.
Тогда пусть будет обычный буферизированный запрос. А перекачивая данные вместе с data_seek вы избавляетесь от цикла по всему результату.
Количество всех записей вы узнаете "бесплатно" с помощью mysql_num_rows.
LEOnidUKG
попробуйте использовать < и > (или BETWEEN) вместо IN
по-идее это быстрее если используется индекс
И составной индекс на cat asc, id asc и в пхп по массиву ходить с конца в начало. ходить по массиву с конца в любом случае лучше сделать тк mysql не умеет хранить индекс в обратном порядке
кстати, вы не рассматривали вариант с передачей параметра типа where cat=2 and id > ... limit 25 ?
5 страниц рассуждений о сферическом коне в вакууме
netwind,iopiop, да это опять доли секунды. Тут главное быстро собрать все ID категории и всё.
Fearful, конечно профессор, шли бы только мимо :)
netwind,iopiop, да это опять доли секунды. Тут главное быстро собрать все ID категории и всё.
последний вариант который я вам предложил пробовали ? И все id собирать не надо, и серверу перебирать все записи не надо