Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка строк после обработки парсером.
 
 автор: RANtleks   (26.11.2012 в 16:27)   письмо автору
 
 

Есть список запросов(запрос это слово или словосочетание) идущих в определенном порядке(порядок не алфавитный). Один запрос на одной строке. Примерно 11000 строк.
Есть парсер, который по списку запросов собирает позиции определенного сайта по данным запросам в ПС. Т.к. парсер многопоточный и некоторые запросы приходится дольше снимать на выходе получается список запросов с поизициями(csv файл), при этом запросы идут в порядке отличном от начального.
Парсер запускается периодически(раз в несколько дней). И для итоговой таблицы необходимо объединять результаты парсинга за разные дни. Т.к. список запросов на выходе каждый раз меняется - необходимо на выходе сортировать список запросов в соответствии с начальным. Как наиболее оптимально это сделать?

  Ответить  
 
 автор: Mookapek   (26.11.2012 в 17:47)   письмо автору
 
   для: RANtleks   (26.11.2012 в 16:27)
 

> Т.к. список запросов на выходе каждый раз меняется - необходимо на выходе сортировать список запросов в соответствии с начальным. Как наиболее оптимально это сделать?

То есть в начальный список надо добавить только те запросы из нового списка, которых нет в начальном? В этом состоит задача?

  Ответить  
 
 автор: Sfinks   (26.11.2012 в 19:26)   письмо автору
 
   для: RANtleks   (26.11.2012 в 16:27)
 

Сделайте двумерный ассоциативный массив, в котором на 1ом уровне будут ключами сами запросы, на втором ключом дата, значением позиция.

Для создания начального массива, загружаете изначальный файл со списком запросов функцией file() и проходитесь по загруженному массиву, создавая пустые элементы, задавая только ключи:
<?
  $lines 
file('zaprosy.txt');
  foreach(
$lines as $line)
    
$array[$line] = array();

Потом поочередно открываете файлы результатов также функцией file() и добавляете элементы.
<?
  $datetime 
filemtime('result1.csv');
  
$results file('result1.csv');
  foreach(
$results as $result)
    {
    list(
$key,$pos) = explode(';',$result);
    
$array[$key][$datetime] = $pos;
    }

В результате получите что-то типа:
<?
array(
  
'удочки' => array(
    
'25.12.2012' => 186,
    
'30.12.2012' => 192
  
),
  
'лески' => array(
    
'25.12.2012' => 183,
    
'30.12.2012' => 194
  
)
)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования