Отображение Файлов Крупного текста через Ajax/додзе

Я хочу отобразить пользователю файл крупного текста (Файлы журнала 100 МБ конкретно) через веб-интерфейс, не требуя, чтобы пользователь должен был загрузить весь файл. Очевидно, возврат всего файла к someones веб-браузеру не был бы разумен, таким образом, моя теория была к используемому Ajax для выборки частей файла в зависимости от пользователя, просматривающего путем прокрутки файл, подобный способу, которым Google Maps обеспечивает "окно" карты.

Мой сервер приложений является PHP и мной абсолютно уверенный, что я могу выполнить, соответствующее ищет и прочитывает файл, и возвратите результаты через XHR к приложению, но моя платформа Ajax является додзе, и я не могу думать ни о каком стандарте dijit, который работал бы и пытается выяснить, как лучше всего это должно было бы реализовать что-то.

Я должен получить свой собственный виджет? Уже есть ли что-то там, что я не знаю? Если я создаю свой собственный виджет, какую структуру он должен взять и является там какими-либо хорошими ресурсами для разработки пользовательских виджетов для dojo/dijit? Какие-либо другие мысли?

5
задан Kitson 13 January 2010 в 14:19
поделиться

4 ответа

Это похоже на то, что вам может потребоваться , я бы предположил, чтобы вы использовали LI, потому что вы получите желание выполнить некоторые действия на каждой строке, скорее всего, каждая строка будет актуальна.

Прокрутка приятно, но вы также можете просто блокировать интерфейс с Pagination, что означает, что они нажимают на следующую страницу, предыдущую страницу, и вы ей, затем обновите вид. Это самый простой способ. При прокрутке вам необходимо получить более выше и ниже текущих видимых линий для бесшовных прокрутков.

Например, если вы хотите показать 25 строк, вам нужно привлечь 25 + нижнюю панель на первом ходу и определить линии, показывающие в нижней панели в качестве порога для сигнализации нового события для загрузки дополнительных 25 + нижние подушечные предметы.

С файлом 100 МБ в ближайшее время соберется в ближайшее время, поэтому вам придется очистить предыдущие записи и определить новую верхнюю панель, чтобы сигнализировать запрос, чтобы получить обратный. То есть 1-й Req: Fetch 25 + Нижняя панель, 2-й Req Fetch 25 + Нижняя панель Удалить Pred 25 - верхняя площадка.

Одно следует отметить, когда вы делаете это, по крайней мере, в Firefox, по крайней мере, оно может быть, как правило, возобновляет воображение и не пожарные события после нескольких нагрузок, поэтому вы можете захотеть умирать / решить ваши даже слушатели. Я только говорю это, потому что у меня есть друг, который в настоящее время работает над чем-то с аналогичной функциональностью, и это некоторые из проблем, которые он наткнулся.

Никто не собирается жаловаться, что им нужно нажать на следующую страницу / предыдущую страницу, она будет быстрой и чистой, но запутайте вашу прокрутку, и никто не захочет использовать ваш виджет.

Вот некоторые другие ресурсы по теме: Старый стол прокручиваемый AJAX - Twitter, как нагрузка больше TUT - Пример прокрутки, прочитайте источник - Проверьте этот проект GoogleCode

1
ответ дан 15 December 2019 в 06:27
поделиться

Я рекомендую кэширование.

Следует отметить, что решение этой проблемы должно учитывать, что чтение достаточно большого файла (100 МБ +) с диска будет связана с диск и, вероятно, опережает любой тайм-аут, что ваш веб-сервер установлен для времени выполнения скриптов Отказ Во избежание того, чтобы пользователь ждать недействительное количество времени, чтобы загрузить любую часть файла, я бы избегал взлома, таких как изменение лимитов тайм-аута вашего сервера.

Вот одно возможное решение, которое приходит на ум: 1) Кэшируйте файл, измельчая его в отдельные файлы. Вы можете легко сделать это в задании CRON или даже вызвать его, когда файл написан. Используйте readfile_chunked ( http://cn2.php.net/manual/en/function.readfile.php#48683 ) или аналогичный.

2) Написать сценарий обработчика услуг, который при вызове из браузера (скажем, './readfile?chunk=##') Возвращает запрошенный кусок.

3) Используйте Widgit Pagination или Scroller, как предложено другой вкладчик, чтобы позвонить по обработчику услуг через AJAX.

Минусы: это неизбежно увеличит количество дискового пространства. Плюсы: Счастливые пользователи в качестве диска будут оптимизированы, и так же будет время выполнения сценария. Кроме того, он хорошо масштабируется. (О порядке O (n)).

1
ответ дан 15 December 2019 в 06:27
поделиться

Если файл журнала - это текстовый файл с постоянным концом строки, может быть, вы можете получить его по номеру строки.

У меня есть идея с алгоритмом, как это:

  1. , когда загружается страница, извлеките первую 100 строк из файла. Поместите его в контейнер, возможно, Div, Textarea или использование
    • поставить обработчик событий, чтобы узнать, что пользователь прокручивает до последней части контейнера.
    • Отправьте запрос AJAX, чтобы получить следующие 100 строк из файла. Пропустите свободную линию в качестве параметра (Get или PARAMETER URI), поэтому скрипт PHP может получить правильную часть файла
    • , поместите ответ AJAX на конец контейнера, обновите следующий ajax Запрос на запрос.
    • Если не осталось больше строк в файле, верните пустой ответ. Обработчик AJAX должен рассмотреть это как конец файла, поэтому удалит обработчик событий на шаге 2 выше.

Я не знаю много о додзё. Я использую прокрутки инструментов jQuery в моем приложении. Легко поставить обработчик события, когда промежуточный проводник достигнет последней страницы, затем извлеките следующий элемент.

0
ответ дан 15 December 2019 в 06:27
поделиться

Рассматривали ли вы возможность использования Dojo Grid для просмотра логов? В ней встроена поддержка динамической загрузки "страниц", т.е. строк данных.

1
ответ дан 15 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

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