Либо форкать расширение либо наследоваться от behaviors/ImageBehave, добавив в метод getImages необязательный аргумент-условие выборки (например $searchCondition). Если $searchCondition задан - добавлять его в качестве дополнительного условия выборки через andWhere.
magary4: дело вкуса. Мне Behat меньше нравится из-за:
- синтаксического языка спецификаций Gherkin вместо привычного php. Для англоговорящих QA спецов не знакомых с php это плюс, для php разработчиков скорее минус.
- менее user friendly доки (у codeception подумали про тестирование api, quickstart под фреймворки и т.п., в behat тоже что-то такое есть, но все мудренее и искать дольше, ИМХО)
Насколько больших? Данные отдаются локально или по сети?
Если речь про файлы размером 100-10000 MB, рассмотрите вариант просто хранить их на диске. Кеш ОС скорее всего будет эффективнее.
Вы на правильном пути.
1. Рекомендую использовать codeception.com как полноценный фреймворк для тестирования.
2. Если времени не вагон, то между функциональным (ваш пункт 2) и приемочным (ваш пункт 3) тестированием я бы отдавал предпочтение последнему. Причина: все то же самое, но с клиентским js и полноценным тестированием пользовательских сценариев.
Ivan Palamarchuk: Можно gearman, можно кролика. Redis в классической сборке не персистентный, я бы не использовал его как брокера сообщений в принципе.
Поднимите бек и фронт у себя локально, ведите код в одном репо. Под фичи отдельные ветки, но для одного человека git flow избыточен ИМХО. С GUI связываться не рекомендую, командная строка - наше все ;)
Разбейте задачу на составляющие:
1.) Вебсервер и бизнес-логика API
2.) Фоновая обработка
Начните с п.1, т.е. реализуйте простейшее API с обычной обработкой. Потом переведите обработку на фон.
Я бы сделал через очереди, т.е. API создает какую-то задачу с параметрами и id в бд, ставит сообщение в очередь и в ответе отдает id задачи, типа "узнавайте готовность задачи по этому id".
Далее брокер отдает сообщение консьюмеру (обработчику), тот обрабатывает задачу и обновляет ее статус.
Если потребуется параллелить нагрузку, просто добавляете дополнительные обработчики.
Только при настройке конфига fpm смотрите, чтобы кол-во процессов было настроено в соответствии с тем, сколько у вас памяти на сервере и сколько в среднем кушает child. Рассчитать оптимальное кол-во может помочь эта статья myshell.co.uk/blog/2012/07/adjusting-child-process...
Php-fpm поставлен из офиц. репозитория ОС? Много расширений (extensions) включено?
SIGBUS означает что проблема с памятью, например если неофиц. пакет или какие-либо из расширений некорректно отрабатывают.
Я бы посоветовал настроить конфиги как тут Как избавиться от SIGBUS при работе php-fpm?