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

Форум PHP

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

 

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

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

тема: ftp_fust_search
 
 автор: global_help   (28.07.2005 в 17:30)
 
 

Всем привет, авторам спасибо за книгу!!!
Вообщем есть вопрос.,
Я подключен к локальной сети и в этой сети есть много абонентов, есть два ftp сервера(компьютеры абонентов) на которых имеется в наличи фильмы, мп3 и софт. Вот вопрос:
Возможно ли сделать поиск по этим ftp - серверам средствами php? Я где-то видел, но не помню где и не представляю себе алгоритм.
По возможности сделайте примерчик

   
 
 автор: cheops   (28.07.2005 в 18:45)   письмо автору
 
   для: global_help   (28.07.2005 в 17:30)
 

Искать по названию файла или ещё как?

PS Когда FTP был актуален делали обычно так - сканировали FTP-каталог и создавали файл со списком того, что есть на FTP-сервере, тогда поиск сводился к поиску по этому файлу.

   
 
 автор: global_help   (29.07.2005 в 09:30)
 
   для: cheops   (28.07.2005 в 18:45)
 

Да !!! ))
Искать по названию файла, и сканирванные данные сохранять в базу, желательно MySQL , но можно и в текстовый файл. Помогите, не могу придумать как же это сделать

   
 
 автор: cheops   (29.07.2005 в 11:44)   письмо автору
 
   для: global_help   (29.07.2005 в 09:30)
 

Вот ещё вопрос - а это обязательно делать по протоколу ftp? Ведь можно запустить сканер на стороне FTP-сервера - сервер MySQL, FTP-сервер и PHP расположены на одном хосте?

   
 
 автор: global_help   (29.07.2005 в 17:58)
 
   для: cheops   (29.07.2005 в 11:44)
 

К сожалению PHP и ftp - две разные машины.
Суть такова:
1) Я http машина, выдающаю пользователям ответ на их запрос, тоесть данные с ответом, те которые проиндексировал скрипт с других машин
2) Мой IP например: http://192.168.1.1 , надо проиндексировать ftp://192.168.2.2 и ftp://192.168.3.3
3) Сохранить все это в файл либо в MySql (желательно в mysql).
4) Сказать Вам спасибо за пример скрипта

   
 
 автор: cheops   (29.07.2005 в 19:33)   письмо автору
 
   для: global_help   (29.07.2005 в 17:58)
 

Из FTP-менеджера из раздела downloads http://www.softtime.ru/info/ftpmanager.php, у меня получился следующий сканер, состоящий из двух файлов
config.php - конфигурационный файл для соединения с FTP-сервером
index.php - сам сканер

Содержимое конфигурационного файла conftg.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();
  }
?>

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

Результат помещается в глобальный массив $filename - поместить содержимое которого в MySQL не составит труда. Если с этим возникнут сложности - создайте новую тему в разделе MySQL http://www.softtime.ru/forum/index.php?id_forum=3 со ссылкой на эту тему.

   
Rambler's Top100
вверх

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