Можно ли создать парсер который вытащит строки из базы данных каждая строка BLOB их порядка 66000. Причем 10000 объектов (компаний) у каждой компании есть (логотип, схема проезда, и карта сайта). Получается надо создать 10000 папок и в каждой папке должны быть свои картинки схемы проезда и логотипы. В базе данных все это прописано просто нагружает сильно серв и надо использовать это в файловой системе. Написал код не судите строго только встал на этот путь. Заранее спасибо. PHP: <?php $serverMySQL="localhost"; // сервер MySQLi $db="mydb"; // база данных $dblog="root"; // логин $dbpass=""; // пароль $mi=new mysqli($serverMySQL, $dblog, $dbpass, $db); $mi->set_charset("utf8"); if($mi->connect_errno): die($mi->connect_error); endif; // Подключение к базе $PublicationID; header('Content-type: image/jpeg; charset=utf-8'); $SQLRequest = "SELECT image FROM id_images WHERE objectId=".$PublicationID.""; // objectid id компании(объекта) $query = mysqli_query($SQLRequest) or die (mysqli_error()); $row = mysqli_fetch_array($query, MYSQLI_ASSOC); $rows = mysqli_num_rows($row); // количество полученных строк for ($i = 0 ; $i < $rows; $i++) { $SQLRequest = "SELECT image FROM id_images WHERE objectId=".$PublicationID.""; $query = mysqli_query($SQLRequest) or die (mysqli_error()); $row = mysqli_fetch_array($query, MYSQLI_ASSOC); $strukture = "../gigal/templates/gigal/images/gallery/'.$PublicationID.'"; if (mkdir($structure, 0777, true)) { echo "Папка '.$PublicationID.' создана"; }else { echo "Папка не создана"; } } mysqli_close($db); // Отключение базы ?>
@bogdan_titomir, а что ты хочешь парсить? Ну вытащи данные из бд и разложи по папкам. А дальше в чем проблема?
Данных свыше 66000 автоматизировать хотел этот процесс, справится ли с этим php? В коде не могу ошибку найти... Изменил код выглядит сейчас так. Пока что цель стоит хотябы папки создать с id а уже потом думать как туда запихать картинки логотипы и остальное. PHP: <?php $link = mysqli_connect( 'localhost', /* Хост, к которому мы подключаемся */ 'root', /* Имя пользователя */ '', /* Используемый пароль */ 'mydb'); /* База данных для запросов по умолчанию */ if (!$link) { printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error()); exit; } // Подключение к базе $PublicationID; header('Content-type: image/jpeg; charset=utf-8'); for ($i = 0 ; $i < $rows; $i++) { $SQLRequest = "SELECT image FROM id_images WHERE objectId=".$PublicationID.""; $query = mysqli_query($SQLRequest) or die (mysqli_error()); $row = mysqli_fetch_array($query, MYSQLI_ASSOC); $strukture = "../gigal/templates/gigal/images/gallery/'.$PublicationID.'"; $rows = mysqli_num_rows($query); // количество полученных строк mkdir($structure, 0777, true); } mysqli_close($db); // Отключение базы ?>
Написать CLI-скрипт (т.е. запускаемый из командной строки), один раз всё вытащить, разложить куда надо и т.п., потом пользоваться. Т.е. один раз пройтись по всей базе скриптом, сколько бы это времени не заняло
Обязательно писать CLI скрипт? Я расчитывал что циклом пройдется по каждой строке и в конце отключит соединение с бд.
php справится. Просто нужно скрипт запустить через консоль, а не http запросом. Если всё это происходит на хостинге, то подключиться можно по SSH. Для этого нужен SSH клиент. Например, PuTTY для винды. http запрос вылетит по тайм ауту.
Команда будет выглядеть примерно так: Код (Text): cd /var/www/имя_пользователя/data/www/имя_сайта.ru/путь/к/скрипту/ && php имя_скрипта.php Путь, конечно, может отличаться в зависимости от хостинга.
@bogdan_titomir имей ввиду, что при таком количестве файлом могут запросто кончиться inodes файловой системы. Тогда получишь ошибку, что на диске нет места (даже если есть свободные гигабайты). --- Добавлено --- И не создавай в одной папке 10.000 папок. Создай 100 папок, по 100 в каждой.
Я на крон вешал задачи и посерьезней, скрипт выполнялся по часу, правда ночью (анализ gps-инфы). А вообще разовые ресурсоемкие операции с базами данных я на делфи пишу - намного шустрее экзешка отрабатывает, нежели пхп-скрипт)
Большое спасибо! --- Добавлено --- Будет сильно тормозить при открытии файла? А повлияет ли на нагрузку серва?
Будет тормозить получение списка файлов, свойств файлов. А открывать такую папку в файловом менеджере по FTP или SFTP это страдания.