LINUX.ORG.RU

PHP: индексация фалов, время выполнения.

 


0

1

Добрый вечер! Есть следующая задача: необходимо из всех *.mp3 файлов в музыкальной коллекции выдернуть id3 теги и поместить их в базу данных. И вот тут я столкнулся с проблемой времени выполнения скрипта.

Что делать? Менять глобальную настройку времени выполнения думаю не стоит. Есть идея запускать PHP как локальный интерпретатор, но все таки хотелось бы чтобы удаленный пользователь мог наблюдать за процессом индексации в браузере.

Примерный код скрипта: http://hastebin.com/tosabequfu.coffee

Ответ на: комментарий от anonymous

Не совсем понимаю, можно подробнее?

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

shooter93 ★★
() автор топика
Ответ на: комментарий от shooter93

Можно и не в бд, а сразу слать по zmq сообщение например. Я бы сделал демона на каком-нибудь питоне, там есть замечательная либа под названием mutagen, которая позволяет работать с ID3 тегами. Можно конечно и на PHP сделать, но сомневаюсь, что оно будет работать так же быстро и не падать через каждые 5 минут.

Kilte ★★★★★
()

А зачем пользователю из браузера следить за индексацией всех файлов? выполняй как бекграунд job

umren ★★★★★
()
Ответ на: комментарий от shooter93

Реализация может быть разной. В том, что ты написал, нужно избавиться от порождения потомков. Либо просто демон висит и проверяет наличие новых данных или заданий в БД, либо как написали выше уведомление через mq. В интернете предостаточно материалов по поводу высоконагруженных систем, пробегись по ним, примерную картинку сформируешь в голове как это может выглядеть, дальше реализуй самый простой вариант. Если непременно нужно отрисовывать пользователю прогресс обработки, я бы делал это через вебсокеты и какой-нибудь pub/sub, в который демон, обрабатывающий данные, писал бы сообщения о ходе обработки.

anonymous
()

Есть идея запускать PHP как локальный интерпретатор, но все таки хотелось бы чтобы удаленный пользователь мог наблюдать за процессом индексации в браузере.

Как это противоречит?

rezedent12 ☆☆☆
()
Ответ на: комментарий от rezedent12

Как это противоречит?

Сейчас думаю, пожалуй никак.

Остановлюсь на cli варианте, его если что можно будет и в cron добавить, например.

shooter93 ★★
() автор топика
Ответ на: комментарий от shooter93

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

rezedent12 ☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.