Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Листинг папки с большим кол-во файлов + VPN

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dragon_Knight
Отправлено: 17 Мая, 2012 - 23:39:12
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Май 2012  
Откуда: г.Мытищи, МО


Помог: 0 раз(а)




Всем привет.
Есть такая ситуация: Есть удалённая папка с большим кол-во файлов (>25.000). Папка подключена к серверу с апачем средствами VPN. По этой папке проводиться поиск файлов по маске, НО он занимает примерно по 10-15 секунд.
Как можно оптимизировать этот процесс?

PHP:
скопировать код в буфер обмена
  1. function QuickSearch($PatchDir, $InputString, $MaxCount = 20)
  2. {
  3.         if($InputString == '') return 0;
  4.  
  5.         if($dir = @opendir($PatchDir))
  6.         {
  7.                 $OutputString = '';
  8.                 $count = 0;
  9.                 while(($file = readdir($dir)) !== false)
  10.                 {
  11.                         if($count == $MaxCount) break;
  12.                         $file = str_replace('.ini','',$file);
  13.                         if(fnmatch($InputString . "*", $file))
  14.                         {
  15.                                 $count++;
  16.                                 $OutputString .= "<span style=\"cursor:pointer; color:#0000BB;\" onClick=\"getElementById('search_form').value = '" . $file . "';\"><b>" . $file . "</b></span><br>\n";
  17.                         }
  18.                 }
  19.                 closedir($dir);
  20.                 if($count == 0)
  21.                 {
  22.                         $OutputString = "<b>Ничего не найдено</b>";
  23.                 }
  24.         }
  25.         else
  26.         {
  27.                 $OutputString = "<b>Ошибка открытия директории</b>";
  28.         }
  29.  
  30.         return $OutputString;
  31. }


Вариант с кэшированием невозможен.
 
 Top
OrmaJever Модератор
Отправлено: 17 Мая, 2012 - 23:50:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




может это всё заменить на glob()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB