Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Сканер 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(!
$linkputerror("К сожалению, не удаётся установить соединение с FTP-сервером $ftp_server"); 
  
// Осуществляем регистрацию на сервере 
  
$login ftp_login($link$ftp_user$ftp_password); 
  
//$login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
  
if(!$loginputerror("К сожалению, не удаётся зарегистрироваться на сервере"); 
  
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке 
  // в окно браузера 
  
function puterror($message
  { 
    echo 
"<center><p class=help>$message</p>"
    exit(); 
  } 
?>
Скопировать в буфер

Теперь, когда соединение установлено, можно осущестить рекурсивный спуск, по дереву директорий 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>
<div id='r7'>
</div>
"

  
//////////////////////////////////////////////////////// 
  // Рекурсивная функция спуска по дереву 
  // директорий 
  //////////////////////////////////////////////////////// 
  
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($file01) == '.') continue; 
      
// Определяем является ли объект директорией 
      
if(substr($acc01) == 'd'
      { 
        
// Директория 
        
scan_ftp($link$dir.$file."/"); 
      } 
      
// Определяем является ли объект файлом 
      
if(substr($acc01) == '-'
      { 
        
// Файл 
        
$filename[] = $file." - ".$dir.$file
      } 
    } 
  } 
?>
Скопировать в буфер

Результат помещается в глобальный массив $filename - поместить содержимое которого в файл или таблицу MySQL не составит труда.

Автор: IT-студия SoftTime

Климакс? Теперь излечимо: климакс. Климакс? Это опасно.

© Copyright 2008-2012 by KDG