2016-06-04 4 views
2

cakephp3 플러그인을 사용하여 메일 대기열을 관리하여 뉴스 레터 (Lorenzo Cakephp Email Queue)를 보내고 있습니다. 그것은 잘 작동하지만 뉴스 레터를 보내려면 bake 명령과 함께 Shell 메소드를 사용해야합니다. 크론 작업에는 문제가 없지만 크론 작업을 기다리지 않고 테스트 메일을 보내고 싶습니다. bake 명령을 PHP exec 명령과 함께 호출하려고 시도했지만 작동하지 않습니다 (올바른 문제 일 수 있습니까?)하지만 권한을 관리 할 서버에 액세스 할 수 없습니다. 그러나 메서드와 컨트롤러가 모두 cakephp에 있기 때문에 콘솔 (외부) 호출을 사용하면 이상하다고 생각합니다.컨트롤러에서 Shell 메서드를 실행하는 방법?

컨트롤러에서 Shell 메서드를 호출하는 방법이 있습니까? "가장 깨끗하고"가장 쉬운 방법이 될 수 있을까요?

도움 주셔서 감사합니다.

답변

0

"가장 깨끗하고"가장 쉬운 방법은 무엇입니까?

쉘은 컨트롤러와 비슷한 것으로 간주되어야합니다. 컨트롤러는 컨트롤러를 호출하지 않습니다.

일반적인 장소에 the cli logic을 넣고 cli와 컨트롤러가 서로를 호출하지 않도록 조치하십시오. 관련 cli 코드는 몇 줄의 코드이지만 실제로는 복잡한 작업을 수행하지 않고 보내는 전자 메일을 반복하여 하나씩 전송합니다.

내가 뉴스 레터를 bake CLI 것을

주를 보낼 수있는 빵을 명령 셸 방법을 사용해야합니다, 그것은 "은"CLI 및 양식의 어떤 일부가 아닙니다 runtime usage of that plugin. 어쨌든 그런 식으로 할 수있는 아주 좋은 아이디어/디자인하지 비록 - 잘못된 CLI를 사용하고 있기 때문에이 현재 작동하지 않을 수 있습니다

bin/cake EmailQueue.sender -h 

시도하고 당신의 컨트롤러 액션에서 실행 명령.

+0

감사합니다. AD7six. 사실, 나는 "빵"에 대해 이야기했지만, 나는 "케이크"를 의미했습니다. 마지막으로, PHP 'exec'명령을 사용하여 EmailQueue.sender : exec ("/ bin/bash".Configure :: read ('App.paths.websiteRootPath'). "/ cms/bin/cake EmailQueue를 시작하는 데 성공했습니다. 보낸 사람 ", $ 결과); – wyllyjon

+0

'어쨌든 그렇게하는 것이 아주 좋은 아이디어/디자인이 아니지만 – AD7six

+0

이것은 플러그인이 만들어진 방식입니다 ... 그리고 그것을 개발하지 않으려면 플러그인을 사용했습니다. – wyllyjon