На разных серверах собирается однотипная информация, и затем сливается на один сервер, где производится сортировка.
Информация например такая:
| уровень опасности | IP-адрес | время выявления | сервер |
Приходит в виде массива строк с разделителями, на принимающем сервере массивы объединяются в один.
Требуется отсортировать по уровню опасности в порядке убывания.
Для каждого уровня опасности отсортировать айпишники по возрастанию.
Если одинаковый айпишник получен с разных серверов, отсортировать по времени выявления.
Пробовал делать циклами - ресурсы жрет нещадно; 3-4 тысячи строк обрабатываются до 30 секунд.
Сейчас думаю о забивке данных во временную таблицу SQL и дальше сортировками внутри SELECT, MySQL с такой задачей справится раз в 10 быстрее.
Но может у кого-то будут идеи по использованию функций сортировки массивов?
Спустя 29 минут, 38 секунд (27.02.2009 - 14:55) sergeiss написал(а):
Я не пробовал, но по описанию должно бы подходить следующее:
Цитата |
array_multisort — Сортировать несколько массивов или многомерные массивы Описание bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] ) Функция array_multisort() может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Эта функция сохраняет соответствие между ключами и соответствующими им значениями. Входные массивы рассматриваются как столбцы таблицы, которую нужно отсортировать по строкам - такой подход напоминает поведение выражения SQL ORDER BY. Первый массив имеет проиоритет в процессе сортировки. ..... |
Для каждого массива можно указывать свой порядок сортировки.
Спустя 23 часа, 4 минуты, 23 секунды (28.02.2009 - 13:59) FatCat написал(а):
sergeiss
Поковырялся, но не разобрался с синтаксисом.
Но в итоге нашел причину тормозов в цикле и устранил.
Тормозил stristr по таблице, ибо размер таблицы довольно большой; сделал stristr только по одному полю таблицы, и скорость работы скрипта стала вполне приемлемой.
Поковырялся, но не разобрался с синтаксисом.
Но в итоге нашел причину тормозов в цикле и устранил.
Тормозил stristr по таблице, ибо размер таблицы довольно большой; сделал stristr только по одному полю таблицы, и скорость работы скрипта стала вполне приемлемой.
_____________
Бесплатному сыру в дырки не заглядывают...