2012-04-20 2 views
1

У меня есть файл с 100 000 строк txt, и мне нужно его прочитать, чтобы вставить большую часть его в мою БД. Я хотел бы используйте этот плагин, как я нашел его очень прост в использовании:Обновление строки выполнения Jquery при чтении txt-файла (от php)

http://www.bram.us/projects/js_bramus/jsprogressbarhandler/#download

Моей проблема: Я прочитал текстовый файл с PHP, но я не understant как обновить индикатор! я что-то вроде этого

echo '$("#progressbar").progressbar({ value: '.($k++).' });'; 

$k, где идет от 0 до 100 думать, но, где я должен положить его ??

+0

Я бы сделал это вот так. При загрузке страницы я запускаю 2 вызова ajax.Первый запрос ajax будет выполнен только один раз и фактически запустит вашу логику чтения php. Второй запрос ajax фактически захватит текущий прогресс. Вам нужно будет изменить свой скрипт чтения PHP, чтобы он обновлял текущий прогресс в сеансе ($ _SESSION ['current_progress']). Затем, в другом php-скрипте, вы получите только этот var из сеанса и выполните эхо-вывод. Итак, я помещаю второй вызов ajax по таймеру, как и каждую секунду. Сделав это, я отправлю запросы и получаю прогресс в реальном времени, поэтому я могу вручную обновить индикатор выполнения на странице. –

ответ

0

Вы не можете, возможно смешать PHP и JavaScript:

  1. РНР будет работать и генерировать HTML/JS файл
  2. HTML,/файл JS будет отправлен клиенту
  3. Клиент будет запускать JS: $("#progressbar").progressbar({ value: XX });

Таким образом, k будет статическим.

-

Если вы действительно хотите сделать что-то подобное легко, вы можете использовать промежуточную таблицу БД с тремя столбцами: txt_file, положение, длина И часто обновлять эту таблицу, в то время как PHP скрипт работает над txt-файл.

Клиентская сторона, в Javascript, вы можете сделать запрос ajax, используя jQuery, например каждые 5 или 10 секунд, который будет вызывать другую страницу PHP, и эта страница PHP вернет только соответствующую строку из таблицы промежуточных. После того, как вы получите результат, вы можете обновить панель прогресса.

-

Это самое простое решение реализовать для вас, но это по-прежнему очень грязная, и парсинг текстового файла лучше должны быть очень долго!

+0

Спасибо! Я думал, что это невозможно, но я просто надеялся. – Yuri

0

Не существует прямого метода для достижения этой цели. Сначала выполняется скрипт PHP, а затем вывод отправляется клиенту, просматривая веб-страницу, поэтому вы не можете показать текущее состояние обработки вашего PHP-скрипта клиенту.

Вы должны будете использовать сочетание AJAX и базы данных:

Создать таблицу для отслеживания прогресса загрузки текстового файла. Всякий раз, когда пользователь (клиент) отправляет запрос на страницу, продолжайте обновлять таблицу с прогрессом. Использовать идентификатор сеанса как индекс в таблице, чтобы было легко отслеживать прогресс на каждого клиента. Теперь используйте запросы AJAX, чтобы получить прогресс из таблицы и представить ее клиенту с индикатором выполнения.

Смежные вопросы