Лучший способ для фоновой обработки в приложении на основе PHP - PullRequest
1 голос
/ 07 сентября 2010

Я работаю над огромным php-приложением с Zend Framework, в этом проекте нам нужно обрабатывать файлы и создавать эскизы для изображений, видео, документов, для которых мы используем imagemagick, ffmpeg, openoffice в фоновом процессе. Чтобы сделать процесс оптимизированным и быстрым с минимальными ресурсами, я думаю о реализации этого процесса с использованием другого языка, например, Java или C.

Что вы, люди, предлагаете

  1. Палка с PHP
  2. Использовать Java
  3. Использовать C

Ответы [ 3 ]

4 голосов
/ 07 сентября 2010

Я бы действительно придерживался PHP. Вот причины:

  1. Нет необходимости изучать другой язык или если вам не нужно:
  2. Если вы хотите нанять кого-то нового, ему нужно только понять php
  3. Вы, вероятно, можете повторно использовать некоторый код, написанный для самого приложения.
  4. вам нужен только php для запуска и настройки таких вещей, как imagemagick, ooffice и ffmpeg. Они уже написаны на C / C ++ и делают тяжелую работу. Ваш PHP-код является просто связующим звеном между этими программами. В чем дело, если вы можете сохранить несколько миллисекунд до тех пор, пока не запустится процесс ffmpeg, если он выполняется несколько минут.

ИМХО, не стоит использовать C / C ++ для запуска этих процессов.

1 голос
/ 07 сентября 2010

Какой бы язык вы ни использовали, включая PHP, вы можете использовать Gearman для запуска и управления фоновыми процессами для тяжелой работы.

Ваше приложение Zend PHP создаст "задания" и отправит ихGearman, который затем отправит их «работникам», которые выполнят их и отчитаются, пока ваше приложение может продолжаться, а не блокироваться.Указанные работники могут быть на множестве языков, включая PHP.

0 голосов
/ 07 сентября 2010

Если ваша обработка в основном использует внешние инструменты, вы можете остаться на скриптах оболочки.

Тогда вы просто запускаете 1-2-4-8 сценариев в фоновом режиме, которые работают постоянно, выбирают и обрабатывают фрагменты работы, и выготово.

Внедрение C ++ / java намного дольше для реализации с очень небольшим преимуществом для этой задачи.

...