2016-09-15 4 views
1

У меня есть конкретная задача в оболочке CakePHP, и она выполняется заданием CRON. Но я хочу, чтобы пользователи могли выполнять его через веб-интерфейс (например, кнопку или что-то в этом роде) всякий раз, когда захочет.Выполнение оболочки с контроллера CakePHP 3.x

Итак, мой вопрос: возможно ли выполнить оболочку с контроллера?

эмулировать в контроллере:

bin/cake MyShell 

Я знаю, что это было возможно в предыдущих версиях CakePHP, но я не нашел что-то связанное с этим в новейшей версии. И используйте exec («bin/cake MyShell») кажется действительно грязным для меня.

+3

вам потребуется заданий очереди, нашел этот плагин (может помочь): https://github.com/dereuromark/ cakephp-queue –

+2

yep, вот правильный способ сделать это. В противном случае, если вы хотите выполнить синхронизацию. DONT использует оболочку, но поместите код в бизнес-класс и просто вызовите его прямо из контроллера. – mark

+0

@ka_lin, спасибо, я проверю этот плагин! – Zat42

ответ

1

создать объект оболочки, вызов любого из его функции требуется для преобразования приложений

$myShell = new \App\Shell\MyShell; 
$myShell->anyShellFun(); 
+1

Вы по-прежнему не должны этого делать, это совершенно другой уровень коммуникации, смешение которых - плохой шаблон. – mark