два пользовтеля одновременно запросили обновление
69 ); # Прикидываемся броузером
70 $page = razbor($response->content, $phrase); # razbor - это функция парсинга страницы с Озона, см. ниже
71 while (-e '$books_cache_dir/'.time().'.cache') { sleep(2); } #в случае, если файл существует( два пользовтеля одновременно запросили обновление или добавление), то немного "спим"
72 my $temp_time = time();
73 open(cache, ">$books_cache_dir/".$temp_time.'.cache'); # сохраняем информацию в файл
74 if ($flock_allow){lockfile('cache');}
75 print cache $page;
76 if ($flock_allow){unlockfile('cache');}
77 close(cache);
78 $cache[$i] = join('%unreal_delimiter%',$temp_time,$path, $coi->param('text'))."\n"; unlink($books_cache_dir.'/'.$temp_cache[0].'.cache'); # обновляем информацию, удаляем старый кэш
79 open(cache_list,">$books_cache_dir/list.cache"); # сохраняем список сохранённых страниц
80 if ($flock_allow){lockfile('cache_list');}
81 foreach my $string(@cache){
82 print cache_list $string;
83 }
84 if ($flock_allow){unlockfile('cache_list');}
85 close(cache_list);
86 last;
87 }
88 }
89 unless($page){ # производим новое добавление страницы, которая ранее известна скрипту не была
# Очень всё похоже на вышеописанный процесс обновления кэша, поэтому комментарии здесь излишни
90 my $browser = LWP::UserAgent->new();
91 my $response = $browser->get($path,
Содержание Назад Вперед