Categories: PHP Скрипты

Сканер FTP или поиск по FTP-серверу

Часто требуется организовать поиск по FTP-серверу. Для того чтобы поиск осуществлялся быстро, FTP-сервер сканируют и помещают названия всех файлов и пути к ним в один файл или таблицу базы данных.

При помощи такого списка осуществлять поиск гораздо проще, нежели сканировать каждый раз весь хост. С другой стороны вам может быть интересно будет просканировать свой собственный FTP-хост чтобы получить представление о его организации.

Это позволит оптимизировать или реорганизовать его структуру.

Создадим небольшое Web-приложение, состоящее из двух файлов: config.php (конфигурационный файл, содержащий параметры соединения с FTP-сервером и осуществляющий установку соединения) и index.php, который представляет собой непосредственно FTP-сканер.

Конфигурационный файл config.php

<?php 
  // Адрес FTP-сервера 
  $ftp_server = "ftp.server.ru"; 
  // Порт соединения 
  $ftp_port = 21; 
  // Пользователь 
  $ftp_user = "softtime"; 
  // Пароль 
  $ftp_password = ""; 
  // Версия Web-приложение 
  $version = "1.0.0"; 
  // Устанавливаем время исполнения скрипта 120 с 
  @set_time_limit(120); 
  // Пытаемся установить соединение с FTP-сервером 
  $link = ftp_connect($ftp_server); 
  if(!$link) puterror("К сожалению, не удаётся установить соединение с FTP-сервером $ftp_server"); 
  // Осуществляем регистрацию на сервере 
  $login = ftp_login($link, $ftp_user, $ftp_password); 
  //$login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
  if(!$login) puterror("К сожалению, не удаётся зарегистрироваться на сервере"); 
  // Небольшая вспомогательная функция, которая выводит сообщение об ошибке 
  // в окно браузера 
  function puterror($message) 
  { 
    echo "<center><p class=help>$message</p>"; 
    exit(); 
  } 
?>

Теперь, когда соединение установлено, можно осущестить рекурсивный спуск, по дереву директорий FTP-каталога

FTP-сканер index.php

<?php 
  // Устанавливаем соединение с FTP-сервером 
  require_once("config.php"); 
  // Директория на сервере 
  // $dir = "/html/forum/"; 
  $dir = "/"; 
  // Запускаем сканер 
  scan_ftp($link, $dir); 
  // Закрываем соединение с FTP-сервером 
  ftp_close($link); 
  // Результат находится в глобальном массиве $filename 
  echo "<pre>"; 
  print_r($filename); 
  echo "</pre>"; 
  //////////////////////////////////////////////////////// 
  // Рекурсивная функция спуска по дереву 
  // директорий 
  //////////////////////////////////////////////////////// 
  function scan_ftp($link, $dir) 
  { 
    GLOBAL $filename; 
    // Получаем все файлы корневого каталога 
    // Дескриптор соединения $link получен в config.php 
    $file_list = ftp_rawlist($link, $dir); 
    // Выводим содержимое каталога 
    foreach($file_list as $file) 
    { 
      // Разбиваем строку по пробельным символам 
      list($acc, 
           $bloks, 
           $group, 
           $user, 
           $size, 
           $month, 
           $day, 
           $year, 
           $file) = preg_split("/[\s]+/", $file); 
      // Если файл начинается с точки - игнорируем его 
      if(substr($file, 0, 1) == '.') continue; 
      // Определяем является ли объект директорией 
      if(substr($acc, 0, 1) == 'd') 
      { 
        // Директория 
        scan_ftp($link, $dir.$file."/"); 
      } 
      // Определяем является ли объект файлом 
      if(substr($acc, 0, 1) == '-') 
      { 
        // Файл 
        $filename[] = $file." - ".$dir.$file; 
      } 
    } 
  } 
?>
admin2

Share
Published by
admin2

Recent Posts

Почему лучше всего инвестировать в квартиры с двумя спальнями?

В сфере инвестиций в недвижимость выбор типа недвижимости может существенно повлиять на доходность и долгосрочную…

2 месяца ago

Майнинг в деревнях — Учебное пособие

1 000 000 человек уже занимаются ГОРЯЧИМ майнингом, и мы рады сообщить, что открываем новый…

2 месяца ago

Mine HOT: майнинг криптовалюты

NEAR Wallet — это мини-приложение в Telegram для хранения NEAR, USDT и добычи HOT. Майнинг…

2 месяца ago

Почему аренда коммерческой недвижимости в Энгельсе — ваша лучшая инвестиция

Аренда коммерческой недвижимости — это ключевой элемент успешного бизнеса в любом городе, включая Энгельс. Это не просто…

3 месяца ago

Покупка готового бизнеса в Костроме

В наше время все больше предпринимателей обращают внимание на перспективы покупки готового бизнеса, особенно в…

4 месяца ago

Notcoin, как играть

Новый 2024 год в криптосообществе начался с ажиотажа по поводу новой игры и потенциально будущей…

4 месяца ago