라이믹스를 컴맨드 라인에서 실행하고 싶습니다
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
음.. 실행시간이 엄청 오래걸리는 기능이 있는데 이걸 그냥 컴맨드라인에서 실행해버리고 싶거든요...
예를 들어 그게 controller에 있는 procLongTime() 이라면 컴맨드라인에서
php index.php?module=my_module&act=procLongTime
이런 식으로 말입니다. 아 물론 컴맨드라인에서 저런식으로 파라미터 주면 안되는건 압니다.
php index.php module=my_module act=procLongTime
이런 식으로 주면 안에서 처리해서 $_GET에 직접 때려박도록 수정했습니다.
근데 역시 생각대로 되진 않네요. 컴맨드라인에서 실행한 것과 웹에서 실행한건 환경이 너무 틀려서...
컴맨드라인에서 라이믹스의 모듈 콘트롤러를 직접 호출할 방법이 없을까요?
댓글 4
index.php를 실행하지 말고 별도로 엔트리 포인트를 만들어서 원하시는 액션을 직접 호출하세요. 어느 파일에서든지 autoload.php 파일을 인클루드하고 Context::init() 해주는 초기화 과정만 거치면 라이믹스 내부 함수와 모듈 클래스들을 자유롭게 호출할 수 있습니다.
예:
<?php
include 'common/autoload.php'; // 필요에 따라 상대경로 조정
Context::init();
$oModuleController = ModuleController::getInstance();
$oModuleController->procLongTime();
그러니까 ModuleHandler를 쓸 수는 없다는 말씀이신거죠?
그럼 컨트롤러 클래스의 인스턴스를 제가 직접 만들어서 호출해야 하나요?
네, ModuleHandler는 $_GET, $_POST 등에서 데이터를 받아다 쓰는데
CLI에서 넘기는 변수는 $argv였던가? 전혀 다른 곳에 저장되니까 인식을 못하지요.
특정 모듈의 특정 함수만 호출하면 되는데 굳이 모듈 찾고 권한 체크하고
결과 받아서 응답 메시지를 생성하는 복잡한 과정을 거치는 것 자체가 낭비고요.