Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с разбивкой папок: 10000 папок разбить на 100 папок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
bogdan_titomir
Отправлено: 21 Октября, 2017 - 08:38:19
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




Написал на pdo парсер теперь проблема с сортировкой так как в 1 папку залезает 10000 папок нужно разбить 100x100 папок.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.     $host = '127.0.0.1';
  5.     $db   = 'gigal';
  6.     $user = 'root';
  7.     $pass = '';
  8.     $charset = 'utf8';
  9.     $objectId = '';
  10.     $image = '';
  11.     $row = '';
  12.     $id = '';
  13.  
  14.     $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  15.  
  16.     $opt = [
  17.         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  18.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  19.         PDO::ATTR_EMULATE_PREPARES   => false,
  20.     ];
  21.     $pdo = new PDO($dsn, $user, $pass, $opt);
  22.  
  23.     $stmt = $pdo->query('SELECT * FROM id_images');
  24.  
  25.         /* TODO
  26.         header("Content-Type: image/jpeg");
  27.         */
  28.         $number_catalog = 1;
  29.     while ($row = $stmt->fetch(PDO::FETCH_LAZY))
  30.     {
  31.         $row_object = $row['objectId'];
  32.         $row_image = $row['image'];
  33.         $id_image = $row['id'];
  34.         $type_image = $row['ext'];
  35.         $count_dir = count(glob("../uploads/image/{$number_catalog}/*.*"));
  36.  
  37.         if($count_dir = 0 || $count_dir = 100) {
  38.         $strukture = "../uploads/image/{$number_catalog}/";
  39.         $path = $strukture.$row_object;
  40.         mkdir($path,true);
  41.         file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  42.         } elseif ($count_dir = 101) {
  43.             $number_catalog++; // Понимаю что это бред но как увеличить переменную на единицу?
  44.             mkdir($path,true);
  45.             file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  46.         }
  47.     }
  48. ?>


Выручайте камрады, заранее Вам спасибо!

(Отредактировано автором: 21 Октября, 2017 - 08:53:39)

 
 Top
bogdan_titomir
Отправлено: 21 Октября, 2017 - 11:12:30
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2017  


Помог: 0 раз(а)




Изменил код но все равно в 1 папку свыше 1000 элементов идет что делать подскажите?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     $host = '127.0.0.1';
  4.     $db   = 'gigal';
  5.     $user = 'root';
  6.     $pass = '';
  7.     $charset = 'utf8';
  8.     $objectId = '';
  9.     $image = '';
  10.     $row = '';
  11.     $id = '';
  12.     $number_catalog = 1;
  13.  
  14.     $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  15.     /*
  16.     $opt = [
  17.         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  18.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  19.         PDO::ATTR_EMULATE_PREPARES   => false,
  20.     ];
  21.     */ // TODO
  22.    
  23.     $pdo = new PDO($dsn, $user, $pass);
  24.  
  25.     $stmt = $pdo->query('SELECT * FROM id_images');
  26.  
  27.     while ($row = $stmt->fetch(PDO::FETCH_LAZY))
  28.     {
  29.         $row_object = $row['objectId'];
  30.         $row_image = $row['image'];
  31.         $id_image = $row['id'];
  32.         $type_image = $row['ext'];
  33.  
  34.         $count_dir = count(glob("../uploads/image/{$number_catalog}/*.*"));
  35.  
  36.         if($count_dir < 100) {
  37.         $strukture = "../uploads/image/{$number_catalog}/";
  38.         $path = $strukture.$row_object;
  39.         mkdir($path,true);
  40.         file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  41.         } else if ($count_dir > 100) {
  42.             $number_catalog = $number_catalog + 1;
  43.             mkdir($path,true);
  44.             file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  45.         }
  46.        
  47.     }
  48. ?>

(Добавление)
Всем спасибо! Справился сам кому интересно или у кого похожие проблемы выкладываю код.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     $host = '127.0.0.1';
  4.     $db   = 'gigal';
  5.     $user = 'root';
  6.     $pass = '';
  7.     $charset = 'utf8';
  8.     $objectId = '';
  9.     $image = '';
  10.     $row = '';
  11.     $id = '';
  12.     $number_catalog = 1;
  13.  
  14.     $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  15.     /*
  16.     $opt = [
  17.         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  18.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  19.         PDO::ATTR_EMULATE_PREPARES   => false,
  20.     ];
  21.     */ // TODO
  22.    
  23.     $pdo = new PDO($dsn, $user, $pass);
  24.  
  25.     $stmt = $pdo->query('SELECT * FROM id_images');
  26.  
  27.     while ($row = $stmt->fetch(PDO::FETCH_LAZY))
  28.     {
  29.         $row_object = $row['objectId'];
  30.         $row_image = $row['image'];
  31.         $id_image = $row['id'];
  32.         $type_image = $row['ext'];
  33.  
  34.         $count_dir = count(glob("../uploads/image/{$number_catalog}/*"));
  35.  
  36.         if($count_dir < 100) {
  37.         $strukture = "../uploads/image/{$number_catalog}/";
  38.         $path = $strukture.$row_object;
  39.         mkdir($strukture,true);
  40.         mkdir($path,true);
  41.         file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  42.         } else {
  43.             $number_catalog++;
  44.             mkdir($strukture,true);
  45.             mkdir($path,true);
  46.             file_put_contents("../uploads/image/{$number_catalog}/{$row_object}/{$id_image}.{$type_image}", $row_image);
  47.         }
  48.        
  49.     }
  50. ?>


Единственный вопрос у меня картинки не открываются но понятно там ширины и высоты у них нет но в базе данных есть таблицы с шириной и высотой можно же при выводе передавать из таблицы в файл ширину и высоту и при выводе они будут работать?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB