Автор Тема: Поиск / обход файлов и папок на ФТП  (Прочитано 2311 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн XavierTeodonius

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
Возникла задача проиндексировать содержимое ФТП для быстрого поиска файлов и папок. Насколько я понимаю, такое необходимо организовывать с помощью рекурсии.  Создаем функцию для загрузки каталога и индексации содержимого. В ней же вызываем цикле (по количеству подкаталогов) функцию еще раз, в параметратрах передаем имя подкаталога.
Содержимое каталога можно получить с помощью 2-х функций - ftp_rawlist и ftp_nlist. Первая возвращяет подробное описание содержимого, вторая - только полные имена.
Собственно, проблема возникла такая: функция ftp_nlist возвращяет только полные имена содержимого каталога, без указания файл это или папка. Т.е. для моей цели не подходит. Функция ftp_rawlist возвращяет также права доступа, время создания, имя владельца и т.д., но также учитывает каталоги "." и ".." и некоторую служебную информацию, но это уже зависит от самого сервера (насколько я это понимаю. Например, для одного фтп-сервера вернула строку "total некоторое_число"). По первому символу в возвращяемых строках можно определить, папка это или файл ("d" и "-" соответственно). А вот с правами доступа я запутался + не получается правильно распарсить строку, чтобы вытащить из нее только название, отбросив остальную информацию. С правами доступа такая проблема, что комбинация rwxrwx--- (или похожая, где закрыты прова на чтение у анонимусов) на одних серверах означает, что доступа к папке нет, на других - он все-таки есть (я не силен в linux\'е и не очень понимаю, почему так происходит). Т.е. я не понимаю, как проверить, доступна папка или нет, и если доступна, то проиндексировать ее и вызвать для нее функцию обхода. Также, в возвращаемых строках, помимио прав доступа указаны владелец, группа, время создания и т.д., но эта информация также может быть представлена по-разному и само назваение может содержать пробелы. Не понимаю, как это распарсить, чтобы извлечь название.

Если кто-то поможет с указанной проблемой или даст ссылки на готовые решения (что-то не нашел, может плохо искал), то буду очень благодарен.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28