2014-01-13 3 views
0

MySQL 데이터베이스가있는 Apache 서버에서 실행되는 CodeIgniter 프레임 워크에 PHP 응용 프로그램이 있습니다. 추상화 레이어를 통해 이루어지는 많은 데이터베이스 통신이 있습니다. 이것은 게임 응용 프로그램이며 사용자가 페이지를 열면 일부 추가 정보가있는 공개 게임 목록이 PHP를 사용하여 MySQL에서 가져와 페이지에 표시됩니다. 이제 목록을 업데이트하도록 설정해야합니다. Ajax를 사용할 때 래그가 너무 크기 때문에 Websockets 서버가 필요합니다. 구현을 위해 Node.js + sockets.io를 사용하기로 결정했습니다. 매번 데이터베이스에 접속할 필 요가 없으며 클라이언트에서 사용자 작업을 기반으로 목록을 업데이트 할 수 있습니다.HTTP없이 PHP에서 Node.js로 구조화 된 데이터 보내기?

이것은 내가 처음으로 PHP를 사용하여 목록을로드 한 후 Node.js로 어떻게 보냅니 까? 이 목적을 위해 HTTP 요청을 보내는 것이 해결책을 찾았지 만,이 시점에서 이미 클라이언트에 표시된 모든 데이터가 있으므로 중복 된 것처럼 보입니다. 나는 클라이언트에서이를 패키징 할 수 다음 단지 노드로부터 데이터를 선택할 수있는 방법이 있나요

array(2) { [0]=> object(stdClass)#19 (6) { ["id"]=> string(1) "1" ["admin_id"]=> string(1) "2" ["start_date"]=> string(19) "2013-11-18 07:19:46" ["status"]=> string(1) "1" ["username"]=> string(15) "Marko Marković" ["option"]=> string(5) "start" } [1]=> object(stdClass)#20 (6) { ["id"]=> string(1) "2" ["admin_id"]=> string(1) "3" ["start_date"]=> string(19) "2013-11-18 07:20:32" ["status"]=> string(1) "1" ["username"]=> string(13) "Dzoni Noksvil" ["option"]=> string(5) "start" } } 

:

는 다음 페이지에 표시되기 전에 PHP 배열의 일부 샘플 데이터를의 클라이언트에서 PHP로 직접 데이터를 보내야 할 필요는 없습니다.

+0

래칫을 사용하지 왜 WebSocket을 서버 - PHP의 측면 물건? – Pointy

+0

래치가 서버에서 작동하도록 일주일 동안 노력했기 때문에 두 명에게 도움을 청하기 위해 스택 오버 플로우가 도움이되지 않아 결국 작동하지 않을 것이기 때문에 포기했습니다. 이야기 할 문서가 있고 작동하도록 만들었더라도 문제가 다시 발생할 경우를 대비하여 실제 온라인 지원이없는 기술을 고수하고 싶지 않습니다. 그것은 단지 매우 연약하고 취약한 것처럼 보였습니다. – jovan

+0

다음은 잘 작동하는 적절한 서버입니다. http://www.4shared.com/rar/7RIos1tuce/PHPWebSocket-Chat-master.html –

답변

0

Apache Thrift과 같은 프로세스 간 통신용 라이브러리를 사용할 수 있습니다. 노드와 PHP에 대한 바인딩이 있습니다. 그러나 이것이 하나의 서버에서 모두 실행되고 있고 일을 정말 간단하게하고 싶다면 PHP가 파일 (JSON으로 직렬화 된 것)에 쓰기를하고 Node가 그 파일을 소비하도록 할 수 있습니다.

2

모든 도메인 논리가 PHP에 있고 단순히 최종 데이터 집합을 Node (또는 다른 언어)로 보내려면 다음과 같이 생각하십시오. Message Queue 또는 Message Broker를 사용하십시오.

는이 작업을 수행하려고 :

PHP 
    | 
Node.js 

이를 고려

PHP 
| 
Message Queue 
| 
Node.js 

당신이 의사 소통이 용이하게 두 언어 사이의 공통 인터페이스가 있으면. PHP는 완성 된 것을 여러분의 큐에 넣을 수 있고 node.js는 그것을 사용할 수 있습니다. 이 길을 가기로 결정했다면, 발견 한 내용으로 게시물을 업데이트하고 어떻게 진행되었는지 듣고 싶을 것입니다.

  • RabbitMQ
  • ZeroMQ (가지 더 소켓 시스템 라이브러리 등) - 세부 사항에 ZeroMQ를 설명하는 좋은 일들
  • Great video을 많이 읽고
+0

아파치 스 리프트 (Apache Thrift) (다른 답변에서 언급 됨)와 함께 살펴 보겠습니다. 이것을 연구하는 데는 시간이 걸릴 것이고, 내가 추가 할 것이 있으면 여기에 게시 할 것입니다. – jovan

+0

ZeroMQ는 RabbitMQ보다 훨씬 적합합니다. RabbitMQ는 복잡한 메시징 토폴로지를 가정하고이를 즉시 지원하지만, 사용자가하려는 일에 과도합니다. ZeroMQ는 통신 시스템을 원하는대로 간단하게 또는 복잡하게 구축 할 수있는 간단한 빌딩 블록을 제공합니다. 빌딩 연결의 실제 수준을 추상화합니다. – Jason

+0

지금 비디오를보고 있는데 ZeroMQ를 사용하면 노드를 건너 뛸 수있는 것처럼 보입니다. 올바르게 이해하면 ZeroMQ 용 PHP 바인드를 수행 한 다음 "영원히 iframe"에있는 Pub/Sub 기능을 사용하여 연결된 모든 클라이언트를 계속 업데이트 할 수 있습니다. 내가 놓친 게 있니? – jovan

관련 문제