질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

PHP + Rhymix 질문입니다.

(PHP를 깊게 알지 못합니다)

 

새로운 게시글을 등록할 때

before든 after든 트리거를 만들고

문서의 extra_vars값을 비동기로 수정해주고 싶습니다.

(curl로 rest api호출후 리턴값을 받아서)

 

PHP를 깊게 알지 못해서

혹시 이런 행동단위를 비동기로 동작하게 할 수 있을까요?

 

문서는 정상적으로 등록되나

비동기로 확장변수의 값을 바꿔주고 싶어요.

  • profile

    별도 php 파일을 만드신뒤 rest api 호출-리턴값 받아서 문서수정 하도록 하신뒤 글 작성시마다 curl이나 passthru 등으로 php를 실행하는 방법이 있습니다. 다만 이경우 중복 실행으로 인한 오류가 발생하지 않도록 해줘야 하며 외부 호출 불가능하도록 꼼꼼히 처리해 주셔야 합니다.

    혹은 beanstalkd 등 큐 서버 이용하셔서 글 작성시 큐에 문서 번호 등 필요한 정보를 등록하게 한뒤 큐서버에서 rest api 호출-글변경 작업을 하셔도 됩니다.

     

    다만 둘다 제대로 구현하려면 만만치 않게 어려운 작업이고, api 호출에 몇십초가 걸리지 않는 한 동기식으로 처리하시는게 오히려 더 나을 수도 있습니다.

  • profile

    PHP에서 비동기는 쉽지 않습니다. 윗분 말씀대로 별도의 파일을 curl로 요청한다고 해도, 그 파일의 실행이 끝날 때까지 curl이 블록킹해버리면 아무 의미가 없고요. 정말로 비동기를 구현하려고 하는 분들은 curl이 아닌 소켓으로 요청만 쏴주고 응답을 기다리지 않은 채 소켓을 닫는 꼼수를 쓰기도 하는데, 이게 가능한지는 서버 설정에 따라 복불복입니다.

    가장 깔끔한 방법은 처리해야 할 내용을 별도의 DB에 넣어두고, crontab에서 1분 간격으로 실행하는 또다른 파일이 정보를 불러와서 처리한 후 다시 저장하도록 하는 것입니다. 동기냐 비동기냐를 떠나서 아예 별도의 시스템으로 돌리는 거죠.

  • profile
    PHP는 컴파일이 아닌 스크립트로 동기화된 성향의 동작이 강합니다.

    static으로 아무리 때려 박고 뭐해도 속도는 빨라지겟지만 모든 요청값이 비동기로 구현하기 어렵지요.

    윗분 말씀처럼 별도의 외부 프로그램으로 돌아가는 시스템으로 마련하지 않는이상 따로 비동기적으로 돌아가는 액션이 없다고 생각하시면 될 것 같네요.