Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Сеть > Работа с FTP |
Автор: Oflashp 14.8.2007, 20:57 |
Вообщем написал FTP-индексатор, обходит все файлы и каталоги. Если файл - то происходит закачка контрольной суммы, последние 64кб из каждого файла или весь файл если весит меньше 64кб. Далее кодируется в мд5 и сливается в базу, для того, чтобы видеть повторные файлы. Столкнулся с проблемой, что большие фтп которые имеют очень большое дерево, индексируются не корректно. Скрипт застревает и пишет ошибку. Естественно при повторе он всё таки индексирует полностью или застревает на шаге открытия каталога или чтения файла. Пробовал: 1)Выставлять интервал (была мысль, что команды слишком быстро летят на сервер) 2)Пробовал методом получения всех каталогов, а потом пошагово каждый каталог обходился 3)Пробовал менять размер закачиваемого куска. Ничего не помогает, бывает так, что скрипт застревает в самом начале и проблему найти не удаётся. Нашёл топики в интернете, возникали такие же проблемы и у других людей. Ищу решения, пробовал на PHP4. Так же ищу решения для другой проблемы, а именно работа с файлами больше 1024мб. При попытке закачать часть файла, то-есть последних 64кб, закачивается весь файл. Если DownloadMasterom ручками делаешь закачку с того же фтп, докачка делается. Заранее благодарю. |
Автор: Diesel Draft 16.8.2007, 10:35 |
Индексатор писать на РНР немного жестоко ![]() А есть закономерность когда вылетает? И какого рода ошибки |
Автор: Oflashp 19.8.2007, 01:59 |
Закономерности нет. Ошибки аля, не могу зайти в каталог или не могу открыть файл для закачки. Хотя при повторе читает. |
Автор: Diesel Draft 19.8.2007, 02:28 |
Может проблема только на одном FTP, или это проблемы коннекта. |
Автор: Oflashp 19.8.2007, 02:39 | ||
Пробовали на разных фтп и под разными ОС.
Функция Flush для того, чтобы при отладке видеть идёт скрипт или застрял снова, а вообще запускался cron'ом |
Автор: WolfON 19.8.2007, 13:51 |
О ужс. Я думаю никто не будет разбираться в таком огромном месиве кода. Читайте правила - надо спрашивать только про неработающий участок. Попробуйте его локализовать. |
Автор: Oflashp 20.8.2007, 15:18 | ||
Читайте топик внимательнее. Ошибки нет. Это видимо, что-то с функциями. Вот я и спрашиваю, что может быть. И если этот код большой, то я чайник. У меня обычно код меньше 3000 строк не бывает. Это тоже вырезка, рабочая. |
Автор: sTa1kEr 21.8.2007, 00:14 |
Oflashp, вы не пробовали вызывать функцию ftp_rawlist() с 3им параметром, т.е. с рекурсивным вызовом? Так же посмотрите первый комментарий на php.net http://ru2.php.net/manual/en/function.ftp-rawlist.php#76137. Там решается аналогичная задача. По второму вопросу, не могли бы вы привести тут часть кода, которая отвечает за чтение и запись в файл? |
Автор: LAVO 22.9.2007, 14:15 |
Oflashp, теперь на фтп выложено большое количество файлов, размер которых превосходит 2, 4 и даже 10 ГБ. Сохранить данные о таком размере файла в переменную PHP нельзя. Она поддерживает только положительные числа до 2 в 16 степени... т.е. может хранить информацию о размере файлов вплоть до 2 ГБ, но не более. Далее идет переход в отрицательные числа и после 4 ГБ - переполнение... |