Q&A

라이믹스를 컴맨드 라인에서 실행하고 싶습니다

2021.08.18 08:17
851
0
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

  • 2021.08.18 08:21 #1603089

    index.php를 실행하지 말고 별도로 엔트리 포인트를 만들어서 원하시는 액션을 직접 호출하세요. 어느 파일에서든지 autoload.php 파일을 인클루드하고 Context::init() 해주는 초기화 과정만 거치면 라이믹스 내부 함수와 모듈 클래스들을 자유롭게 호출할 수 있습니다.

     

    예:

    <?php

    include 'common/autoload.php'; // 필요에 따라 상대경로 조정

    Context::init();

    $oModuleController = ModuleController::getInstance();

    $oModuleController->procLongTime();

     

  • 2021.08.18 08:26 #1603102

    그러니까 ModuleHandler를 쓸 수는 없다는 말씀이신거죠?

    그럼 컨트롤러 클래스의 인스턴스를 제가 직접 만들어서 호출해야 하나요?

  • 2021.08.18 08:46 #1603116

    네, ModuleHandler는 $_GET, $_POST 등에서 데이터를 받아다 쓰는데
    CLI에서 넘기는 변수는 $argv였던가? 전혀 다른 곳에 저장되니까 인식을 못하지요.
    특정 모듈의 특정 함수만 호출하면 되는데 굳이 모듈 찾고 권한 체크하고
    결과 받아서 응답 메시지를 생성하는 복잡한 과정을 거치는 것 자체가 낭비고요.

  • 2021.08.18 08:27 #1603108
    감사합니다 바로 해보겠습니다.