Индикатор выполнения загрузки в PHP

4 месяца назад у меня была такая проблема. Когда я нажимаю на ссылку, я могу посетить каждую ссылку, но просто устройства Apple в Safari не работают. Я изменил свою HTML-структуру ссылок, и я исправил. Иногда некоторым устройствам / браузерам требуется событие touchend.

Если вы живете проблемой, просто устройство / браузер. Может быть, эта ссылка может вам помочь: Проблема зависания iPad / iPhone заставляет пользователя дважды щелкнуть ссылку

79
задан casperOne 30 April 2012 в 00:42
поделиться

8 ответов

С сожалением вынужден сказать, что, насколько мне известно, чистый индикатор выполнения загрузки PHP или даже индикатор выполнения загрузки PHP / Javascript невозможны из-за того, как работает PHP. Лучше всего использовать ту или иную форму загрузчика Flash.

AFAIK Это потому, что ваш сценарий не выполняется, пока не будут заполнены все суперглобальные переменные, включая $ _FILES. К тому времени, как ваш PHP-скрипт будет вызван, файл будет полностью загружен.

РЕДАКТИРОВАТЬ: Это больше не так. Это было в 2010 году.

13
ответ дан 24 November 2019 в 10:17
поделиться

Я только что нашел Mega Upload ( http://www.raditha.com/php/progress.php ), который использует Perl для загрузки и отображения индикатора выполнения.

2
ответ дан 24 November 2019 в 10:17
поделиться

Можно сделать индикатор выполнения php / ajax. (Оформить заказ на библиотеку Html_Ajax в грушах). Однако для этого требуется установка специального модуля в php.

Другие методы требуют использования iframe, через который php проверяет, какая часть файла была загружена. Однако этот скрытый iframe может быть заблокирован некоторыми надстройками браузера, потому что скрытые iframe часто используются для отправки вредоносных данных на компьютер пользователя.

Лучше всего использовать какую-либо форму индикатора выполнения flash, если вы не контролируете свой сервер.

1
ответ дан 24 November 2019 в 10:17
поделиться

Вам нужно будет использовать Javascript для создания индикатора выполнения. Простой поиск в Google привел меня к этой статье: WebAppers Simple Javascript Progress Bar с CSS .

Виджет Dojo File Download Progress Bar Widget - еще один вариант, использующий структуру Dojo Javascript.

EDIT: Предполагая, что вы загружаете большое количество изображений (например, фотоальбом) и размещаете их в своем PHP-скрипте, вы можете использовать javascript для чтения результатов из публикации и обновления индикатора выполнения на основе количества загруженных изображений / всего количество изображений. Это имеет побочный эффект: обновление происходит только после завершения каждой публикации. Посетите здесь , чтобы узнать, как отправлять сообщения с помощью JS.

1
ответ дан 24 November 2019 в 10:17
поделиться

Если у вас установлено APC , он имеет крючок обратного вызова для загрузки прогресса.

Расмус Лердорф (создатель PHP) имеет образец этого с использованием YUI (OH и вот источник PHP ).

См. Документация здесь .

13
ответ дан 24 November 2019 в 10:17
поделиться

загрузка флэш-памяти сделает работу. он загрузит файл туда, куда вы хотите. Но ко мне предъявляются дополнительные требования. мне нужно изменить имя файла до завершения загрузки. это также возможно с флэш-решением, НО ТОЛЬКО если вы добавляете ФИКСИРОВАННУЮ переменную. Мне нужно добавить идентификатор пользователя к имени файла, и я не вижу способа сделать это.

0
ответ дан 24 November 2019 в 10:17
поделиться

Gears и HTML5 достигли прогресса в объекте HttpRequest для отправки загрузки файла через AJAX.

http://developer.mozilla.org/en/Using_files_from_web_applications

Другие ваши варианты, как уже ответили другие:

  1. Загрузчик на основе Flash.
  2. Программа загрузки на основе Java.
  3. Второй запрос в стиле кометы к веб-серверу или сценарий для отчета о размере полученных данных. Некоторые веб-серверы, такие как Lighttpd, предоставляют модули для выполнения этого внутрипроцесса, чтобы сэкономить накладные расходы на вызов внешнего скрипта или процесса.

Технически существует четвертый вариант, аналогичный загрузке на YouTube, с помощью Gears или HTML5 вы можете использовать капли, чтобы разбить файл на небольшие фрагменты и отдельно загрузить каждый фрагмент. По завершении каждого фрагмента вы можете обновить статус выполнения.

2
ответ дан 24 November 2019 в 10:17
поделиться

Другой загрузчик, полный JS: http://developers.sirika.com/mfu/

  • Бесплатно (лицензия BSD)
  • Интернационализируемый
  • кроссбраузерный
  • , у вас есть выбор, устанавливать APC или нет (недоопределенный индикатор выполнения VS определенный индикатор выполнения)
  • Настраиваемый внешний вид, поскольку он использует механизм шаблонов додзё. Вы можете добавить свой класс / идентификаторы в шаблоны te в соответствии с вашим css

получайте удовольствие

2
ответ дан 24 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: