Какой-то php-флеш - PullRequest
       14

Какой-то php-флеш

0 голосов
/ 14 марта 2011

Позвольте мне сначала описать, что я сделал:

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

Проблема в том, что каждый раз, когда я выполняю вызов AJAX, я теряюмного времени с вещами, специфичными для фреймворка (инициализация модели и прочее), с браузером, обрабатывающим URL и так далее.Поэтому мне было интересно, смогу ли я использовать функцию сброса из php.

Но я читал, что функция сброса не работает отлично во всех браузерах (что странно, потому что это функция на стороне сервера),Если бы я использовал функцию сброса, я бы просто написал <script>increase_progressbar</script> или что-то еще, и я мог бы это сделать.

Итак, есть ли какие-либо мнения по поводу функции сброса?Я тестировал его на маленьких скриптах, но я хочу знать, действительно ли кто-то использовал его с большими скриптами.Также я могу выслушать любые другие предложения о том, что я хочу делать:)

1 Ответ

1 голос
/ 14 марта 2011

Я не буду давать вам прямой совет, но я расскажу вам, как я это сделал в одном из моих проектов. В моем случае мне нужно загрузить файлы Excel, а затем проанализировать их. Данные превышают 3000 строк, и мне пришлось проверять все столбцы каждой строки на наличие данных. Когда я анализирую его сразу после загрузки, анализатор где-то часто падает, и это действительно было небезопасно.

Так как я это сделал? Процесс загрузки разделен на 2 части:

  1. Физически загрузить файл (обычное поле загрузки и отправить). Когда кнопка нажата, некоторые CSS и JS «волшебные» скрывают форму, и на экране появляется одна приятная полоса загрузки. После завершения загрузки страница просто обновляется, и снова появляется форма для следующего файла

  2. Начните синтаксический анализ данных на фоне, используя php-cli, как @Dragon предлагает с exec ().

В базе данных у меня была таблица, в которой хранится информация о файлах, и есть логическое поле с именем "parsed". Когда синтаксический анализатор заканчивает работу, последняя задача - обновить это поле до true.

Итак, вот весь процесс с точки зрения пользователя:

  1. выберите файл и загрузите его.
  2. дождитесь загрузки файла на сервер. До этого появляется сообщение и строка загрузки, указывающая, что что-то работает. Форма загрузки была скрыта с помощью CSS и JS, поэтому пользователь не может загрузить другой файл.
  3. Когда он закончился, страница была обновлена ​​(потому что я сделал обычную отправку _POST), на экране снова появится форма, а также список недавно загруженных файлов (это я сохранил в сеансе).
  4. В каждом из узлов этого списка у меня был индикатор (значок). В первый раз это спиннер (вращающееся колесо ajax).
  5. Регулярно (30 секунд или 1 минута) я проверял таблицу файлов с помощью Ajax-вызова и считывал проанализированное поле. Если фоновый процесс был закончен, поле было установлено в true, и с некоторыми JS и CSS я изменил значок на «Готово». В противном случае спиннер останется.

В моем проекте нет необходимости показывать дополнительную информацию об импорте, но вы всегда можете сойти с ума с другими дополнительными данными.

Надеюсь, это поможет вам в вашем проекте.

...