2012-08-17 4 views
5

현재 클라이언트 - 서버 통신을 위해 웹 소켓을 사용할 PHP 응용 프로그램을 개발 중입니다. 필자는 스레딩 메커니즘, 메모리 관리 (순환 참조) 또는 처리되지 않은 소켓 라이브러리가 없어서 PHP를 서버 응용 프로그램에 사용해서는 안된다는 말을 많이 들었습니다.PHP가 설치된 웹 소켓 서버

지금까지 모든 것이 잘 작동하고 있습니다. 나는 다른 데이터베이스 시스템에 접근하기 위해 websocket 라이브러리와 Doctrine DBAL로서 phpws를 사용하고있다. PHP는 5.3.8 버전입니다. 서버는 최대 30 개의 클라이언트를 제공해야합니다. 그러나 특히 마지막 날에는 장시간 실행되는 응용 프로그램에서 PHP의 비효율성을 설명하는 몇 가지 기사를 읽었습니다.

이제 PHP로 웹 소켓을 계속 사용할지 또는 서버 측 응용 프로그램 전체를 다시 빌드해야하는지에 대해 알지 못합니다. Socket.IO로 파이썬을 사용해 보았습니다.하지만 기대했던 결과를 얻지 못했습니다. 그대로

  • 하는 모든 것을 유지 :

    나는 내가 다음과 같은 옵션이 있습니다 같아요.

  • 애플리케이션에 Ajax를 Socket.IO와 함께 사용하게합니다. 데이터가 서버에 제출 될 때 클라이언트의 ajax 호출을 호출하는 서버 측 스크립트를 실행하십시오.

마지막으로 요점은 꽤 재미 있지만, 몇 가지 작업이 필요할 것입니다. 서버가 모든 클라이언트 요청을 한 번에 실행하는 데 문제가 있습니까?

무엇을 권하고 싶습니까? PHP의 메모리 관리에 문제가 있습니까? (클라이언트가 서버에 데이터를 보낼 때마다 gc_collect를 사용하고 있습니다.) 여전히 유효합니까? PHP를 서버로 사용하지 않는 이유는 무엇입니까? (스레딩 없음 ...)

+0

현재 작업중인 디자인을 폐기해야하는지 묻는 중입니다. 이와 같은 질문은 여기서는 실제로 유효하지 않습니다. 직접 작성해야 할 사항을 결정해야합니다. 어떤 다른 서버 측 언어를 알고 있습니까? Python 코드를 게시하면 코드를 다시 작성하기로 결정한 사람이 문제를 찾을 수 있습니다. – xthexder

답변

4

당신은 즉 (서버에서 다른 포트에 노드 서버에 socket.io를 실행 시도 할 것으로 예상 어떤 의미 할 didnt는 할 줄 알았는데 모든 기능을 종료 goDaddy와 같은 호스팅 계획을 사용하지 않는 경우).

나는 그것을 사용하고 있으며 공연은 정말 만족 스럽습니다. 포트 80에 php 파일을 서비스하는 아파치 서버가 있고 내 서버 - 클라이언트 통신은 8080 (dev) 또는 843 (prod) 포트에서 socket.io를 실행하는 Node.js 서버를 사용하여 수행됩니다.

Node.js는 실제로 가볍고 성능이 뛰어나지 만 서버로 실행해야합니다. Nodejitsu.com은 websocket 프로토콜을 사용할 수있는 호스팅 솔루션으로 베타 버전이므로 아직 무료입니다. socket.io를 사용하여 80 번 포트에서 수신 대기해야한다는 점에 유의하십시오. 이는 네트워크의 제한 사항입니다.

포트 80에서 페이지를 모두 액세스하려는 경우 varnish과 같은 역방향 프록시가 필요합니다.

도움이 되었기를 바랍니다. 좋은 하루 되세요.

+1

+1 최고의 성능을위한 socket.io가있는 Node.js의 경우 –

0

이유는 무엇입니까 (스레딩 없음, ...) PHP를 서버로 사용하지 않는 이유가 있습니까?

그래, 많은 소켓 기능은 서로 호환되지 않으므로 디버깅하는 것이 좋습니다.

내가 자신을 비슷한 시도하고 좌절 신드에게 내가