2011-12-09 3 views
4

저는 여유 시간에 천천히 파고 들며 학습을 배우기 때문에 채널을 구독하는 웹 사이트의 '청취자'를 만드는 데 사용할 수있는 옵션에 관심이 있으며 메시지를 수신 할 때 웹 페이지를 업데이트합니다.청취 청취자 생성하기 - PHP에서는 가능합니까?

지금, 내 옛날 액션 스크립트 일과 현재 자바 스크립트 작업에서, 나는이 두 언어가 주어진 리스너의 개념에 대해 잘 알고있다. 그러나, 내 서버 측 프로그래밍 -fu는 PHP, 약간의 레일, 약간의 파이썬 및 pseudo node.js까지 확장됩니다 (저는 꽤 숙련 된 자바 스크립트 사용자이고 node.js가하는 일을 이해합니다).).

필자의 주된 기술 세트는 PHP에 놓여 있으므로 영구 연결/소켓을 PHP와 함께 수행하여 PHP에서 리스너를 만들 수 있는지 궁금합니다.

나는 이것이 실제로 가능하지 않다고 생각하기 때문에 (또는 바람막이 균열을 망치로 고정하는 것과 동일합니다), 어떤 서버 측 옵션은 무엇입니까? 현재 로컬 호스트에있는 redis 서버에 영구 연결을 사용하는 자바 스크립트 수신기를 만들 수 있습니까? Socket.io는 내가 조사해야 할 대상인가?

초급 초급 초보자를위한 통찰력은 대단히 감사하겠습니다.


편집 나는 여기에 부분적으로 내 질문에 대한 대답 How to use redis PUBLISH/SUBSCRIBE with nodejs to notify clients when data values change?을 좋은 게시물을 발견했다.

동일한 작업을 수행하는 node.js 이외의 다른 방법이 있습니까? PHP를 완전히 삭제하고이 프로젝트에 새로운 것을 시도해 보는 것은 괜찮습니다. 그것은 어쨌든 개인적인 것입니다.

+0

나는 당신이 원하는 것을 얻지 못한다. PHP는 서버 측이므로 페이지로드시 페이지가 업데이트됩니다. 여전히 이벤트/옵저버 유형의 메 커니 즘을 찾고 있다면 http://components.symfony-project.org/event-dispatcher/를 사용할 수 있습니다. 그리고 이것은 또한 http://rediska.geometria-lab.net/documentation/usage/publish-subscribe/에 재미있을 것입니다. 그러나 다시는, 나는 당신이 뭘하고 싶은지에 대해 꽤 이해하지 못합니다 .. –

+0

@KristianHildebrandt 저는 라이브 업데이트 타입 어플리케이션을 좀 더 탐색하고 있습니다 ...그러나 많은 파문을 한 후에이를 수행하는 유일한 방법은 node.js와 같은 것을 사용하여이를 구축하는 것입니다. node.js는 어쨌든 리스너를 사용하도록 제작되었습니다. 관계없이, 링크 주셔서 감사합니다! –

+0

@Jonathan Coe : 답변을 수락하십시오. – McK

답변

1

당신이 찾고있는 모든 레디 스에서 채널을 구독하고 PHP가 잘 작동합니다 같은 다음 보인다 몇 가지 작업 서버 측을 할 경우. Predis 및 phpredis의 간단한 설명은 두 채널 모두 redis 채널에 가입하고 메시지를 수신 할 때마다 콜백을 등록 할 수 있음을 보여줍니다.

+0

팁 주셔서 감사! 이 질문을 올린 이래로, 나는 redis에 대한 꽤 중요한 핸들을 얻었습니다 ... 대부분은 mysql -> redis에서 전체 프로젝트를 이식하고 Predis를 사용하여 중재자 역할을합니다. 꽤 놀라운 소프트웨어이고, 나는 사물의 전체 펍/서브 사이드에서 더 나은 핸들을 얻고 무엇이 수행되는지 볼 수있어서 정말 기쁩니다. –

2

redis 내의 pub/sub 메커니즘은 가입 된 클라이언트를 영구적으로 유지해야합니다. 즉, 구독을 통해 업데이트를 수신하려면 "항상 켜져 있어야합니다".

PHP 스크립트/응용 프로그램을 데몬화할 수는 있지만 이상적이지 않으며 PHP의 핵심 역량도 아닙니다.

다른 해결책을 찾아 보시기 바랍니다. 설득력있는 언급을 한 node.js + redis + pub/sub 게시물을 발견했다면 아마도 더 강하게 고려해야합니다.

재발견 저장된 데이터를 설계하는 방법을 다시 생각해 볼 수도 있습니다. 아이템이 "팝"될 수있는 세트는 아마도 redis pub/sub를 사용하지 않고 같은 목적에 적합 할 것입니다.