Пишу систему индексации фтп серверов. В общем-то все хорошо, сканит и работает достаточно быстро.
Однако столкнулся с парой проблем.
Система работает двумя способами. После соединения с сервером, скрипт пробует рекурсивный запрос:
ftp_rawlist($ident,$dir,true);
Если результата нет, то делает обычный ftp_rawlist (и далее ходит по папкам).
В случае с рекурсивным запросом такая трабла — результат не всегда содержит полный листинг. Можно ли это как-то отследить? И в чем может быть проблема?
Далее, если используется обычный метод сканирования.
Результат от ftp_rawlist обрабатывается в цикле, и если там папка, ее содержимое опять же запрашивается через ftp_rawlist.
Проблема 1. Срабатывает не на всех папках. Частично решение найдено, если нет результата, используется ftp_nlist. Однако, в некоторых случаях, результата все равно нет. С чем это может быть связано?
Проблема 2. Некоторые серверы (при обычном сканировании) периодически просто рвут соединение. Опять же, частичное решение в виде: если !ftp_chdir($link,"/"), то сделать реконнект и продолжить сканирование помогает не всегда.
Проблема 3. Иногда уходит в бесконечный цикл, путь при этом выглядит так: сервер/папка/папка/папка/папка... Решение в виде провеки существования папки по этому пути помогло, однако, хотелось бы знать причину.