nick4
Guest
Текстовый файл с IP -> Разделение на хиты и уники
Возникла проблема с обработкой базы данных = разделение на хиты и уники:
Есть текстовый файл с IP адресами (собираются за текущий день) раз в пол часа собираем информацию о уникальных и не уникальных посетителях. Для этого написал простенькую функцию:
все конечно-же работает, проверил на файле со 100.000 ip - запрос примерно 7-10 секунд. однако эта-же функция на базе из 1 млн IP просто вешает проц, причем, что интересно - функция set_time_limit игнорируется. И виснет она не при переборе IP-шников, а еще только при чтение файла функцией file.
Вот думаю - что делать? в связи с чем file виснет?
Как можно оптимизировать работу скрипта?
Может стоит использовать для испорта MySQL? - но что-то мне не очень хочется.. и будет-ли быстрее?
И попутно вопросы:
1. Стоит-ли использовать заместо разделителя строк "\n" например ":" и затем разбивать строку не функцией file, а explode + file_get_contents?
2. Будет лучше, если я сделаю базу не из IP, а из ip2long?
Возникла проблема с обработкой базы данных = разделение на хиты и уники:
Есть текстовый файл с IP адресами (собираются за текущий день) раз в пол часа собираем информацию о уникальных и не уникальных посетителях. Для этого написал простенькую функцию:
PHP:
function ip2uniq($file) {
$f=file($file);$i=0;$h=0;
$u=array();
foreach($f as $r) {
$r=rtrim($r);
if (empty($r)) continue;
if (!isset($u[$r])){$h++;$u[$r]=0;}
$i++;
}
return array('uniq' => $u, 'hits' => $i);
}
Вот думаю - что делать? в связи с чем file виснет?
Как можно оптимизировать работу скрипта?
Может стоит использовать для испорта MySQL? - но что-то мне не очень хочется.. и будет-ли быстрее?
И попутно вопросы:
1. Стоит-ли использовать заместо разделителя строк "\n" например ":" и затем разбивать строку не функцией file, а explode + file_get_contents?
2. Будет лучше, если я сделаю базу не из IP, а из ip2long?