Вот немного SQL, предполагая, что вы можете поместить свой журнал в таблицу, такую как
CREATE TABLE log (
ord int,
user VARCHAR(50) NOT NULL,
url VARCHAR(255) NOT NULL,
ts datetime
) ENGINE=InnoDB;
Если данные не отсортированы по пользователю, то (при условии, что столбец ord
- это номер строки из файла журнала)
SELECT t.url, t2.url, t3.url, count(*) c
FROM
log t INNER JOIN
log t2 ON t.user = t2.user INNER JOIN
log t3 ON t2.user = t3.user
WHERE
t2.ord IN (SELECT MIN(ord)
FROM log i
WHERE i.user = t.user AND i.ord > t.ord)
AND
t3.ord IN (SELECT MIN(ord)
FROM log i
WHERE i.user = t.user AND i.ord > t2.ord)
GROUP BY t.user, t.url, t2.url, t3.url
ORDER BY c DESC
LIMIT 10;
Это даст 10 лучших путей остановки для пользователя. В качестве альтернативы, если вы можете получить его по заказу пользователя и времени, вы можете легче присоединиться к ряду номеров.