Отображение различных сообщений через ajax в разных точках во время выполнения скриптов PHP - PullRequest
1 голос
/ 03 февраля 2012

Я использую следующий плагин для загрузки файла jquery для отображения индикаторов выполнения при загрузке пользователем mp3.

http://blueimp.github.com/jQuery-File-Upload/

Мой серверный скрипт принимает загрузку, преобразует mp3 во временный wav-файл, генерирует изображение сигнала аудио в формате png, затем анализирует аудио и сохраняет исходное имя файла mp3, сигнал png, проанализированный темп и id3 информация в базу данных.

Весь этот анализ и генерация занимает несколько секунд. Примерно от 5 секунд для среднего 5-6 МБ mp3-файла до, возможно, минуты для большого 50 МБ подкаста.

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

То, что я хотел бы сделать, это отобразить сообщение, такое как «анализ вашей песни», возможно, с анимированным GIF-файлом, после того как файл загружен, а затем, когда скрипт php завершен, отобразить окончательное «завершенное» сообщение .

Может кто-нибудь дать мне какой-нибудь совет о том, как лучше всего подойти к этому в рамках упомянутого выше плагина jQuery и стандартного PHP.

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

Большое спасибо

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Очень простое простое решение: может быть, сценарий записывает в журнал сообщения о его продвижении в файл, а затем опрашивает этот файл из AJAX?

Скрипт может удалить файл, когда это будет сделано, например, когда AJAX в конечном итогеполучает 404, это может означать, что он закончен.

Имя файла может совпадать с именем аудиофайла с добавленным к нему «.log» или чем-то еще.

0 голосов
/ 03 февраля 2012

Сохранение сообщений о состоянии в сеансе во время обработки видео,

Выполнение синхронизированных ajax-запросов для получения сообщений

...