powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / просканировать папки на сетевом диске
23 сообщений из 23, страница 1 из 1
просканировать папки на сетевом диске
    #38193198
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли в php просканировать определенную папку и подпапки на сетевом диске и вывести название всех папок в переменные?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193236
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolotov,

Если папка доступна каждому для чтения, то возможно. Иначе придется с логин/пасс замутить.
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193242
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
phpz,

доступ к ней есть каждому
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193248
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolotov,

Тогда на выбор: glob, opendir/readdir и т.д.
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193391
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
phpz,

доступ к папке должен быть именно у пользователя, который запускает страницу или у web сервера?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193459
krevedko13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193478
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у сервера нет доступа к сетевой папке, как можно прописать логин и пароль для доступа? Сервер с сетевой папкой находится в домене, а web сервер к домену не подключен
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38193575
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте примонтировать сетевую шару к ФС сервера.
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201711
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
phpzТогда на выбор: glob, opendir/readdir и т.д.

Можно ли с их помощью сканировать подкаталоги?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201744
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
А что им может помешать? Кстати, есть еще RecursiveDirectoryIterator
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201790
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mhx,

дело в том что readdir, opendir сканирует только то, что в корневом каталоге

может я не так делаю
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?php
$dir = "/media/windows";

// Открыть известный каталог и начать считывать его содержимое
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "файл: $file : тип: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201829
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Вам надо реализовать рекурсивную функцию для построения дерева каталогов
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201847
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mhxВам надо реализовать рекурсивную функцию для построения дерева каталогов
Есть ли примеры как это сделать, не могу найти?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201865
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я нашел

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php

$path = realpath('/media/windows/);

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
    echo "$name\n";
}



Только появился следующий вопрос, у меня все значения пишутся в одну строчку, как сделать построчно?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38201965
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Посмотреть код страницы или заюзав <br/> вместо \n
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38202376
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня сканируется несколько сотен тысяч папок и пути записываются в БД. Но сканирование до конца не доходит, вроде как страница прогрузилась и всё, сканирование закончилось. Как сделать, чтобы при запуске php скрипта страница грузилась пока сканируются папки?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203012
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolotovсканируется несколько сотен тысяч папок и пути записываются в БДЭто действительно очень много и долго.
Варианты решения разные могут быть в зависимости от ситуации. Возможно, скрипт срубается по превышению времени выполнения, а может браузер прекращает ожидание ответа. Думаю, правильным способом для столь долгоиграющих заданий был бы запуск cli-скрипта по расписанию, а через браузер только давать задание и получать готовый результат (или информацию о том что задание еще не завершено).
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203525
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

запустил через cli и увидел следующую проблему - в переменной $name попадаются слова с одинарными кавычками ( ' ' ) и соответственно запрос не выполняется, как обойти эту ситуацию?

Код: php
1.
2.
$name = substr("$name", 11);
$db_path = "INSERT INTO [ok_path] (path) VALUES ('$name')";
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203536
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно банально addslashes . Правильно (по крайней мере, для MySQL) mysql_real_escape_string или вообще использовать mysqli или PDO . Для вашей СУБД наверняка что-то есть похожее.
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203707
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Экранирование проставляю, но в БД не пишет, не пойму в чем дело

Код: php
1.
2.
3.
4.
5.
6.
7.
$name = "disk_1/филиал_1/_03/ОБТ/263/филиал 'тест-тест2 ТЕ'/111.jpg";

$name2 = addslashes("$name");

$db_path = "INSERT INTO [ok_path] (path) VALUES ('$name2')";

mssql_query($ok_db_path);



пишет ошибку

PHP Warning: mssql_query(): message: Incorrect syntax near 'тест'. (severity 15) in /var/www/s.php on line 34
PHP Warning: mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 15) in /var/www/s.php on line 34
PHP Warning: mssql_query(): Query failed in /var/www/s.php on line 34
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203801
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Код: php
1.
$name2 = addslashes("$name");


Кавычки-то зачем тут? О_О
Чему равна $ok_db_path?
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38203838
kolotov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо перед кавычкой ставить не / а еще одну кавычку

решил проблему так, но не знаю правильно ли , может есть другие способы решения

Код: php
1.
$name=str_replace('\'','\'\''.$name);
...
Рейтинг: 0 / 0
просканировать папки на сетевом диске
    #38205025
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и есть. Но было бы неплохо показать реальную строку запроса из $db_path до того как сделали это финт ушами.

ЗЫ: Про MS SQL сходу не скажу как именно надо экранировать.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / просканировать папки на сетевом диске
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]