|
автор: global_help (28.07.2005 в 17:30) |
|
| Всем привет, авторам спасибо за книгу!!!
Вообщем есть вопрос.,
Я подключен к локальной сети и в этой сети есть много абонентов, есть два ftp сервера(компьютеры абонентов) на которых имеется в наличи фильмы, мп3 и софт. Вот вопрос:
Возможно ли сделать поиск по этим ftp - серверам средствами php? Я где-то видел, но не помню где и не представляю себе алгоритм.
По возможности сделайте примерчик | |
|
|
|
|
|
|
|
для: 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 , но можно и в текстовый файл. Помогите, не могу придумать как же это сделать | |
|
|
|
|
|
|
|
для: 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) Сказать Вам спасибо за пример скрипта | |
|
|
|
|
|
|
|
для: 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(!$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();
}
?>
|
Сканер 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;
}
}
}
?>
|
Результат помещается в глобальный массив $filename - поместить содержимое которого в MySQL не составит труда. Если с этим возникнут сложности - создайте новую тему в разделе MySQL http://www.softtime.ru/forum/index.php?id_forum=3 со ссылкой на эту тему. | |
|
|
|