2016-10-31 4 views
1

내 서버에 두 개의 PHP 응용 프로그램이 있습니다. 그들 중 하나는 RESTAPI를 가지고 있으며 두 번째 애플리케이션에서 소비하고 렌더링하려고합니다. 그런 다음 API를 컬링하는 것이 더 좋은 방법입니까? 나는 어떻게 든 php-fpm에 직접 데이터를 요청할 수 있습니까?PHP - 응용 프로그램 간 통신

웹 서버를 통해 말리거나 요청하는 것이 잘못되었습니다.

이 모든 것이 단일 서버에서 발생합니다. 아마도 확장 성이 좋지 않지만 작은 프로젝트 일 것입니다.

+0

컬 (curl)을 사용하면 구성 요소에 분리가 추가됩니다. 앞으로 다른 서버로 이동해야한다면 어떻게 될까요? 또한 http://guzzlephp.org/를 클라이언트로 사용할 수 있습니다. – Scuzzy

+0

@Scuzzy'guzzle'은'curl'의 맨 위에 빌드되어 있기 때문에 대안이 아닙니다. – arkascha

+0

또한 통신용 소켓 또는 공유 메모리를 사용할 수도 있습니다. 그러나 나는 그것이 좋은 생각이라고 생각하지 않는다. – arkascha

답변

1

직접 함수에 액세스 할 수있는 경우 REST를 사용하는 이유는 무엇입니까?

모든 것이 동일한 서버에 있으면 웹 서버를 통해 다소 의미없는 실행을하기 때문에 일부 REST가 필요하지 않습니다. 그러나 이미있는 경우 오버 헤드에 대해 신경 쓰지 않아도됩니다 (트래픽이 많지 않은 경우에는 의미가 있습니다). curl 대신 file_get_contents을 사용하면 더 쉽게 사용할 수 있지만 더 빠를 것이라고 생각합니다./느린; 둘 다 옳다.

내부 용으로 다른 포트에서 두 번째 웹 서버 (두 번째 가상 호스트)를 사용할 수도 있습니다. 그렇게하면 일들이 잘 분리됩니다.

(모든 다른 서버에 있지만 로컬 네트워크가 다음 소켓을 사용하는 것이 가장 빠른 것이다. 경우)

+0

어떻게 변경 될지 모르겠으므로 함수를 직접 호출하고 싶지는 않지만 API가 없다고 확신합니다. 내부 용으로 별도의 가상 호스트를 생성하는 것에 대해 생각해 본 적이 없지만 이것이 최상의 솔루션이라고 생각합니다.나는 또한 file_get_contents를 시도 할 것이다. 감사합니다. – Krisa

0

웹 서버를 통해 말리거나 요청하는 것이 잘못되었습니다. - 동의하지 않습니다. 동일한 서버에 있더라도 Php CURL을 사용하여 달성하고자하는 것을 달성 할 수 있습니다.

+1

무언가가 가능하지 않고 무언가 잘못되었다는 점은 매우 다른 성명입니다. – arkascha

+0

@arkascha 고맙습니다. – Krisa

0

저도 같은 문제가 있었다,하지만 난 MySQL로 "큐"작업을 사용하여 해결, 작업자는 모든 풀링 메소드 또는 PHP가 새로운 서버 측 작업자를 실행할 수 있습니다. 결과가 동일한 데이터베이스에 저장되었으므로 PHP 페이지는 언제든지 결과 또는 상태를로드 할 수 있습니다.

+0

이 작업은 시간과 관련이없는 작업에만 가능하므로 데이터베이스에서 변경 내용을 폴링해야하므로 대기 시간이 영향을주지 않습니다. – arkascha

+0

그게 큰 오버 헤드가 될까? 데이터베이스에서 직접 데이터를 가져올 수는 있지만 API를 사용하는 이유는 별도의 것입니다. 데이터 복제는 불필요한 것처럼 보입니다. – Krisa

+0

@Krisa 데이터베이스를 사용하여 응용 프로그램 간의 데이터 교환이 _ 중복되지 않습니다! 반대로 여러 응용 프로그램은 공통 데이터베이스를 공유 할 수 있으므로 데이터베이스 서버는 통신 허브의 역할을합니다. – arkascha

관련 문제