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

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

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

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

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

Можно ли с их помощью сканировать подкаталоги?
...
Рейтинг: 0 / 0
28.03.2013, 10:33
    #38201744
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
А что им может помешать? Кстати, есть еще RecursiveDirectoryIterator
...
Рейтинг: 0 / 0
28.03.2013, 10:49
    #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
28.03.2013, 11:04
    #38201829
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
Вам надо реализовать рекурсивную функцию для построения дерева каталогов
...
Рейтинг: 0 / 0
28.03.2013, 11:10
    #38201847
kolotov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
mhxВам надо реализовать рекурсивную функцию для построения дерева каталогов
Есть ли примеры как это сделать, не могу найти?
...
Рейтинг: 0 / 0
28.03.2013, 11:17
    #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
28.03.2013, 12:01
    #38201965
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
Посмотреть код страницы или заюзав <br/> вместо \n
...
Рейтинг: 0 / 0
28.03.2013, 14:39
    #38202376
kolotov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
у меня сканируется несколько сотен тысяч папок и пути записываются в БД. Но сканирование до конца не доходит, вроде как страница прогрузилась и всё, сканирование закончилось. Как сделать, чтобы при запуске php скрипта страница грузилась пока сканируются папки?
...
Рейтинг: 0 / 0
28.03.2013, 18:30
    #38203012
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
kolotovсканируется несколько сотен тысяч папок и пути записываются в БДЭто действительно очень много и долго.
Варианты решения разные могут быть в зависимости от ситуации. Возможно, скрипт срубается по превышению времени выполнения, а может браузер прекращает ожидание ответа. Думаю, правильным способом для столь долгоиграющих заданий был бы запуск cli-скрипта по расписанию, а через браузер только давать задание и получать готовый результат (или информацию о том что задание еще не завершено).
...
Рейтинг: 0 / 0
29.03.2013, 07:51
    #38203525
kolotov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
vkle,

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

Код: php
1.
2.
$name = substr("$name", 11);
$db_path = "INSERT INTO [ok_path] (path) VALUES ('$name')";
...
Рейтинг: 0 / 0
29.03.2013, 08:24
    #38203536
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
Можно банально addslashes . Правильно (по крайней мере, для MySQL) mysql_real_escape_string или вообще использовать mysqli или PDO . Для вашей СУБД наверняка что-то есть похожее.
...
Рейтинг: 0 / 0
29.03.2013, 10:40
    #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
29.03.2013, 11:22
    #38203801
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
просканировать папки на сетевом диске
Код: php
1.
$name2 = addslashes("$name");


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

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

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

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


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