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 :: Прогресс бар при загрузке файлов

 PHP.SU

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


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

> Без описания
3d_killer
Отправлено: 29 Января, 2015 - 19:24:24
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




Пробовал сделать прогресс бар написал по быстрому пару файликов кода и тестить, все бы хорошо но как то обновляется вяло на локальном хосте то есть прыжками 8, 15, 21 % и т.д.
запросы состояния идут часто но данные обновляются редко, может параметр какой в конфиге подправить?
прилагаю код хотя скорее всего он и не нужен
PHP:
скопировать код в буфер обмена
  1. $percent = 0;
  2. $data = array();
  3. if(isset($_SESSION['upload_progress_'.$_POST['uuid']]) and is_array($_SESSION['upload_progress_'.$_POST['uuid']]))
  4.         {
  5.         $percent = ($_SESSION['upload_progress_'.$_POST['uuid']]['bytes_processed'] * 100 ) / $_SESSION['upload_progress_'.$_POST['uuid']]['content_length'];
  6.         $percent = round($percent,2);
  7.         $data = array('percent' => $percent, 'content_length' => $_SESSION['upload_progress_'.$_POST['uuid']]['content_length'], 'bytes_processed' => $_SESSION['upload_progress_'.$_POST['uuid']]['bytes_processed']);
  8.         }
  9. else
  10.         {
  11.                 $data=0;
  12.         }
  13. echo json_encode($data);


CODE (html):
скопировать код в буфер обмена
  1. <? session_start(); ?>
  2. <!DOCTYPE html>
  3. <html lang="ru">
  4. <head>
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  6. <meta charset="utf-8" />
  7. <script type="text/javascript" src="jquery.min.js"></script>
  8. <script>
  9. var t;
  10. var percent;
  11. progress = function(){
  12. var uuid=$('#uu_id').val();
  13. $.ajax({
  14.                 async:true,
  15.                 type: "POST",
  16.                 dataType: 'json',
  17.                  url: 'action.php',
  18.                 data: {uuid:uuid},
  19.                 success: function(data)
  20.                         {
  21.                                 if(data==0)
  22.                                         {
  23.                                                 clearTimeout(t);
  24.                                                
  25.                                                 $('#status').text('100%');
  26.                                         }
  27.                                 else
  28.                                         {
  29.                                                 $('#status').text(data.percent+'%');
  30.                                         }
  31.                                
  32.                         }
  33.         });
  34. }
  35. function upload_file_fuc(id)
  36.         {
  37.                 document.getElementById(id).submit();
  38.                 t = setInterval("progress()", 50);
  39.         }
  40. </script>
  41. </head>
  42. <body>
  43.     <form action="upload.php" target="frame_h" method="post" id="form_upload" enctype='multipart/form-data'>
  44.         <input type="input" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="<? echo rand(3,1000); ?>" id="uu_id" />
  45.         <input type="file" name="upload_file[]" onChange="upload_file_fuc('form_upload');" multiple='multiple'>
  46.     </form>
  47.     <iframe name='frame_h'></iframe>
  48.     <div id="status"></div>
  49. </body>
  50. </html>

в хром есть встроенный так он как то плавно идет, это у всех так кто юзал?

(Отредактировано автором: 29 Января, 2015 - 19:26:10)

 
My status
 Top
Contr
Отправлено: 29 Января, 2015 - 20:01:22
Post Id



Частый гость


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


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




Скинуть мой самопал ?
 
 Top
3d_killer
Отправлено: 29 Января, 2015 - 20:06:02
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




он плавненько идет?
 
My status
 Top
Contr
Отправлено: 29 Января, 2015 - 20:13:21
Post Id



Частый гость


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


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




мягко и нежно ))
Спойлер (Отобразить)

убери сам то что тебе не нужно Подмигивание
 
 Top
3d_killer
Отправлено: 29 Января, 2015 - 20:17:16
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




Contr это не серверный скрипт, так что немного не то
(Добавление)
вроде нашел
PHP:
скопировать код в буфер обмена
  1.  
  2. session.upload_progress.freq[=1%] - Частота обновления данных в сессии, данные будут обновляться при получении каждых session.upload_progress.freq байт Если за значением следует ‘%, то значение будет интерпретировано как процент от общего размера загружаемых данных
  3. session.upload_progress.min_freq[=1.0] - Минимальная задержка в секундах между обновлениями данных
  4.  

только какие бы поставить
(Добавление)
о вот так ништяк, если кому надо
session.upload_progress.freq = "0.1"
session.upload_progress.min_freq = "0.1"
(Добавление)
вот так вобще красота
session.upload_progress.freq = "0.01"
session.upload_progress.min_freq = "0.01"

правда не знаю как это на сервак влияет
(Добавление)
ага выяснил, чем меньше ставишь тем медленнее файл грузится видимо изза обновлений, оптимально 0,1 ставить
 
My status
 Top
Мелкий Супермодератор
Отправлено: 29 Января, 2015 - 20:44:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




3d_killer пишет:
session.upload_progress.freq = "0.01"
session.upload_progress.min_freq = "0.01"

Эммм, а вы вообще документацию читали?
Что min_freq измеряется в секундах и PHP умеет считать доли секунды я верю. Не очень верю в 10мс, ну да ладно.
А вот как считать 0.01 байта в freq - вообще ни одной идеи. Можно эту величину указывать в процентах - но у вас знака % нет.


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 29 Января, 2015 - 20:50:57
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




Мелкий локально тестил и с 10 мс показывает доли %, но загружается значительно медленнее тестовый файл 200 мб при 100 мс грузится секунды 3 при 10 - секунд 20
(Добавление)
поставил так, вроде нормально получилось
session.upload_progress.freq = "1000"
session.upload_progress.min_freq = "0.1"
(Добавление)
приятно что в IE8 тоже работает
 
My status
 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