Обновление индикатора выполнения из скрипта PHP - PullRequest
4 голосов
/ 04 февраля 2011

Я пишу небольшое приложение, которое выполняет следующее:

  1. Позволяет пользователю загружать файл Excel
  2. Считывает данные из каждого столбца файла Excel и создаетизображение на основе данных

Сейчас я загружаю файлы и вызываю скрипт, который циклически просматривает файл, создает изображения, создает страницу (или запись в БД) с каждым именем картинки, а затемотображает их на экране.Я бы предпочел, чтобы он уведомил об использовании его прогресса, хотя.Я хотел бы, чтобы скрипт PHP выполнял вызов изображений через ajax (я знаю, как это сделать), но для него, по сути, возвращать значение JSON, HTML, обычный текст, на самом деле не имеет значения.

Это выполнимо?Я использую JQuery, так что, возможно, в AJAX-вызовах есть функция, о которой я не знаю?

Ответы [ 5 ]

3 голосов
/ 04 февраля 2011

Да, это выполнимо. Это не функция jQuery, поскольку она требует интеграции на стороне сервера. Вот примерный набросок того, как это реализовать:

  1. Иметь таблицу базы данных (или другое эквивалентное хранилище), в которой хранятся пары ключ-значение. Проще всего, если и ключи, и значения являются строками.
  2. Когда задание инициируется, создайте уникальную строку, которая является ключом и значением 0, которую вы храните в таблице базы данных. Пользователь также перенаправляется на URL-адрес, содержащий эту уникальную строку. Например. "/ MySite / ERxQl3ew".
  3. Используя jQuery, пользовательский клиент должен опросить URL-адрес "/ getkeyvalue / ERxQl3ew". Этот URL должен проверить базу данных и получить статус задания, скажем «45,3», чтобы указать, что задание выполнено на 45,3%. Проще всего, если страница представляет собой строку JSON.
  4. Сервер должен обновлять строку с помощью ключа ERxQl3ew всякий раз, когда изменяется статус или ход выполнения этого задания.
  5. Когда задание завершено, сервер может установить значение строк в «окончательное», чтобы указать, что задание выполнено. Когда клиентский JavaScript видит это значение, он должен перенаправить пользователя на конечную целевую страницу или иным образом указать пользователю, что работа выполнена.

Может быть, это звучит сложнее, чем на самом деле. Это довольно тривиально для реализации.

0 голосов
/ 04 февраля 2011

Это выполнимо.

Есть несколько способов сделать это действительно, но один очень простой способ - иметь таблицу базы данных, которая отслеживает импорт.Когда строка обрабатывается, обновите таблицу базы данных, затем пусть JavaScript вызывает PHP-скрипт каждые несколько секунд через Ajax, и он может возвращать общее количество строк и обработанных строк или процент и т. Д.совсем просто так:

Import ID | Total Rows | Processed Rows
---------------------------------------
100       | 12125      | 1246
101       | 6212       | 1302
0 голосов
/ 04 февраля 2011

Я рекомендую следующее:

  1. вам нужно сделать какой-нибудь индикатор прогресса, например файл, в котором вы напишите, как далеко продвинулся процесс форматирования.
  2. вам также нужен php, который читает этот файл и сообщает, какой приоритет он читает из него
  3. вам нужно периодически вызывать этот php с помощью ajax, пока он не прочитает 100%

Также не забудьте использовать токен для управления одновременным использованием.

0 голосов
/ 04 февраля 2011

jQuery имеет индикатор выполнения, а также есть пара PHP-скриптов, которые возвращают «прогресс», который выводит состояние скрипта.Вот блог, с которым я столкнулся некоторое время назад.Альтернативный метод PHP Cache (APC), а также метод UploadProgress.Оба они являются пакетами PECL.надеюсь, это поможет

howto-php-and-jquery-upload-progress-bar

0 голосов
/ 04 февраля 2011

я так не думаю.Если вы хотите проверить прогресс, вам придется проверять через jquery, я не знаю, каждые 2 секунды.проблема в том, что вам придется запускать php-скрипт асинхронно и сообщать о внутреннем прогрессе, который вы запрашиваете через javascript.Невозможно, чтобы вы загрузили что-то, и тогда, безо всяких действий, ваши php-скрипты вам что-то ответят

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...