[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: нужна помощь в оптимизации кода..
adwaer
Вобщем нужно вывести в из базы количество посещений страниц.
В названиях страниц в таблице не должны присутствовать передаваемые методом GET переменные. Например,
/folder/page.php?DNSID=fd44892a0f4d1cb7cc2961baf511aea5
и
/folder/page.php?var=50&DNSID=a91373ce49306662d9636e9e57ef6c01
- это одна и та же страница, в таблице она должна быть представлена как /folder/page.php

в базе хранится лог файл сервера апач. в виде:
id host date files serv_req traf
1 83.69.119.43 2005-12-25 / 200 17980
2 83.69.119.43 2005-12-25 /design/main.css 200 8795
....
41 213.180.217.8 2005-12-25 /contest/view.php?DNSID=0eb6ee75 ..

В базе порядка 27000 строк, поэтому время загрузки это большая проблема. Может кто подсказать метод удачней моих алгоритмов? А то страница грузится дольше 30 сек.. а еще даже не все реализовано..

<?php
$db = mysql_connect ("localhost","admin","1234");
mysql_select_db("tests",$db);

$files = mysql_query("SELECT id, files
FROM log"
,$db);

$row = mysql_fetch_array($files);
do
{
$page='empty';$k=0;
while($k < strlen($row['files']))
{
if($row['files'][$k]=='.')
{
//проверка: нет ли параметров типа 'GET'
if($k+4 < strlen($row['files']) && $row['files'][$k+4]=='?')
{
$page = substr($row['files'],0,$k+3);
}
else
{
$type = substr($row['files'],$k+1,5);
if($type='php' || $type='html' || $type='/' || $type='htm' || $type='shtm' || $type='shtml' || $type='php3' || $type='phtml' || $type='phtm' || $type='txt')
{
$page = substr($row['files'],0,strlen($row['files']));
}
}

$k++;
//если не найдено расширение файла, следовательно это '/'
if($k==strlen($row['files']) && $page=='empty')
{
$page = substr($row['files'],0,strlen($row['files']));
}
echo "$page<br>";
}
}
}

while($row = mysql_fetch_array($files));
?>




Спустя 12 минут, 33 секунды (18.03.2010 - 23:46) kirik написал(а):
Попов убьет твой код smile.gif
while($row = mysql_fetch_assoc($files))
{
if(($qpos = strpos($row['files'], '?')) === false) {
$url = $row['files'];
} else {
$url = substr($row['files'], 0, $qpos);
}
echo $url . '<br />';
}

Спустя 3 минуты, 31 секунда (18.03.2010 - 23:49) kirik написал(а):
А то что грузится долго, это не столько проблемы запроса, сколько реализации - сделай постраничный вывод например.

UPD
Или если нужны посещения страниц, то пиши в базу страницы без GET'ов, а потом при запросе делай GROUP BY `files`.

Спустя 1 час, 49 минут, 30 секунд (19.03.2010 - 01:39) adwaer написал(а):
мегареспект тебе чувак =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.