Pull to refresh

Показатель обратной загрузки файла для форм (Upload Progress Meter)

Reading time2 min
Views4.7K
Вы когда-то видели этот лоадер:
rapidshare loader
Или вот этот:
drop.io loader

Они служат для показания процента аплоада на сервер файла который вы заливаете через форму. К сожалению, на самом простом уровне показать процент аплоада нельзя, а хотелось бы. Согласитесь видеть процент загрузки всегда приятней чем скучный «Loading...» в строке-статуса браузера, поэтому я расскажу как сделать такой аплоад-показатель для ваших форм загрузок.


Чтобы еще лучше понять о чем речь попробуйте рабочий пример:
php5.bluga.net/UploadProgressMeter/demo.php

Для начала я установил новенький http сервер Apache версия 2.2.4 и не совсем новенький PHP 5.2.0

Надеюсь устанавливать эти приложения вы умете, я скажу лишь что делал это под Windows поэтому к php нам нужно будет подключить два расширения .dll если они еще у вас не установлены, это:
php_apc.dll
php_json.dll

Чтобы установить эти расширения нужно положить эти файлы папку расширений вашего сервера, чтобы узнать что это за папка выполните phpinfo(); и посмотрите переменную extension_dir (обычно C:\php\ext)
В php.ini подключите их:
extension=php_apc.dll
extension=php_json.dll

Также следует задать параметры для php_apc, также в php.ini:
extension=php_apc.dll
apc.shm_segments=1
apc.optimization=0
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=On

Обратите внимание на последнюю установку, а именно apc.rfc1867 она непосредственно относиться к нашей задаче. больше по настройкам APC тут.

Установите php_apc если запустите лежащий внутри папки файл получите такую картинку:
apc

Проверьте загрузились ли модули, это можно сделать функцией extension_loaded

Теперь создайте файл php и вставте в него такой текст такой текст всё должно работать, в нём используется библиотека пользовательского интерфеса Yahoo! для создания двигающейся полосы загрузки, вы можете использовать что-то своё.

Возможно вам прийдется удаленно работать с сервером:
www.odessa.net/docs/LINUX/SHELL/shell.html

Сейчас есть uploadprogressextension для таких целей, это конечно тоже вариант но не люблю лишними екстеншинами загружать сервер, а php_apc и php_json всётаки и так бы стояли.
Спасибо за внимание.
Tags:
Hubs:
Total votes 40: ↑29 and ↓11+18
Comments83

Articles