PHP + Rhymix 질문입니다.
(PHP를 깊게 알지 못합니다)
새로운 게시글을 등록할 때
before든 after든 트리거를 만들고
문서의 extra_vars값을 비동기로 수정해주고 싶습니다.
(curl로 rest api호출후 리턴값을 받아서)
PHP를 깊게 알지 못해서
혹시 이런 행동단위를 비동기로 동작하게 할 수 있을까요?
문서는 정상적으로 등록되나
비동기로 확장변수의 값을 바꿔주고 싶어요.
PHP | PHP 7.2 |
---|---|
CMS | Rhymix 2.x |
PHP + Rhymix 질문입니다.
(PHP를 깊게 알지 못합니다)
새로운 게시글을 등록할 때
before든 after든 트리거를 만들고
문서의 extra_vars값을 비동기로 수정해주고 싶습니다.
(curl로 rest api호출후 리턴값을 받아서)
PHP를 깊게 알지 못해서
혹시 이런 행동단위를 비동기로 동작하게 할 수 있을까요?
문서는 정상적으로 등록되나
비동기로 확장변수의 값을 바꿔주고 싶어요.
PHP에서 비동기는 쉽지 않습니다. 윗분 말씀대로 별도의 파일을 curl로 요청한다고 해도, 그 파일의 실행이 끝날 때까지 curl이 블록킹해버리면 아무 의미가 없고요. 정말로 비동기를 구현하려고 하는 분들은 curl이 아닌 소켓으로 요청만 쏴주고 응답을 기다리지 않은 채 소켓을 닫는 꼼수를 쓰기도 하는데, 이게 가능한지는 서버 설정에 따라 복불복입니다.
가장 깔끔한 방법은 처리해야 할 내용을 별도의 DB에 넣어두고, crontab에서 1분 간격으로 실행하는 또다른 파일이 정보를 불러와서 처리한 후 다시 저장하도록 하는 것입니다. 동기냐 비동기냐를 떠나서 아예 별도의 시스템으로 돌리는 거죠.
별도 php 파일을 만드신뒤 rest api 호출-리턴값 받아서 문서수정 하도록 하신뒤 글 작성시마다 curl이나 passthru 등으로 php를 실행하는 방법이 있습니다. 다만 이경우 중복 실행으로 인한 오류가 발생하지 않도록 해줘야 하며 외부 호출 불가능하도록 꼼꼼히 처리해 주셔야 합니다.
혹은 beanstalkd 등 큐 서버 이용하셔서 글 작성시 큐에 문서 번호 등 필요한 정보를 등록하게 한뒤 큐서버에서 rest api 호출-글변경 작업을 하셔도 됩니다.
다만 둘다 제대로 구현하려면 만만치 않게 어려운 작업이고, api 호출에 몇십초가 걸리지 않는 한 동기식으로 처리하시는게 오히려 더 나을 수도 있습니다.