2009-06-26 7 views
2

저는 대부분의 공유 PHP 호스팅에서 실행할 소켓 서버를 구현하려고합니다.PHP 소켓 또는 Python, Perl, Bash 소켓?

소켓 서버는 사용자가 아무것도하지 않고도 자동으로 PHP에서 설치, 시작 및 중지 할 수 있습니다. 소켓 서버가 작성된 언어는 대다수의 공유 호스팅에서 전 세계적으로 실행되는 한 중요하지 않습니다. http://code.google.com/p/php-object-cache/

소스 : http://code.google.com/p/php-object-cache/source/browse/trunk/socket.class.php

그러나, PHP는 소켓을 지원하도록 컴파일 될 수 있으며, 많은 서버가 아닌 실행

현재, 나는 개체 캐시를 구현 PHP로 소켓 서버를 작성했습니다 PHP 소켓 지원.

내 진짜 질문은 : 소켓 서버를 어떤 언어로 구현해야하며, 최대 플랫폼 지원을 가지고 있어야하며 PHP 내에서 호출 할 수 있어야합니다.

즉, PHP 지원 서버에서 가장 일반적인 스크립팅 언어는 무엇입니까?

또는 모든 서버에서 작동하도록 컴파일 된 언어로 소켓 서버를 작성해야합니까?

순간적으로 IIS를 그림 밖으로 벗어나게합니다. 나는 ... 많은 PHP 사이트를 IIS에서 실행되는 생각하지 않는다


편집 :

미안 내 질문이 명확하지 않다 생각합니다. 내가 알고 싶습니다

는 어떤 언어 것은 다음과 같은 요구 사항 주어진 소켓 서버를 만들기위한 가장 적합 :

언어는 아파치 (안 CLI)에서 실행되는 PHP와 함께, 공유 호스팅에 존재해야합니다. 소켓 지원은 필수 확장을 통하지 않고 기본적으로 설정되어야합니다. PHP는 deamon을 파일에 작성하고 deamon을 시작하고 중지 할 수 있어야합니다.

단일 서버에 대한 솔루션을 요구하지 않습니다. 그것은 공유 호스팅 서버의 대다수에서 기본적으로 실행되어야합니다.

+0

왜 PHP에서 호출 하시겠습니까? 서버는 대개 inviked되지 않지만 항상 deamon으로 실행됩니다. –

+0

얼마나 많은 "many"가 있는지 모르지만 주요 제공자로부터 호스팅을 받았으며 IIS이고 아주 좋은 PHP 지원을하고 있습니다. –

+0

소켓 서버를 시작하려면 웹 인터페이스가 필요합니다. 따라서 PHP에서 시작하고 중지 할 수 있어야합니다. 그것은 또한 PHP에 의해 설치되어야합니다. – bucabay

답변

2

정말 설치 요구 사항에 따라 다릅니다. 종종 소켓 서버를 작성하는 가장 쉽고 가장 표준적인 방법은 inet.d service을 작성하는 것입니다. 이것은 유닉스 시스템의 표준 데몬이며 프로세스를 포크하고 소켓 레벨 세부 사항을 처리합니다. Unix에서 1024 이하의 포트에서 서비스를 실행하려면이 방법을 쉽게 수행 할 수있는 방법 중 하나입니다. 그러나 초기 설치에는 inet.d를 구성 할 루트가 필요합니다.

공유 호스팅을 사용하여 PHP에서 exec 호출을 할 수 있다면, 그런 식으로 데몬을 시작할 수 있습니다. 그러나 포트 1024 이상에서 실행해야합니다. 다음으로 프로그램이 멀티 스레드인지 멀티 프로세스인지 결정해야합니다. 일반적으로 Java 프로그램은 멀티 스레드이며, Apache 인스턴스는 일반적으로 다중 프로세스입니다.

마지막으로 호스트에 방화벽이있을 수 있습니다. 이렇게하면 공유 호스팅 계정이 봇넷에 포함되는 것을 방지 할 수 있습니다. 방화벽 규칙이 다른 포트에 대한 연결을 허용하지 않으면 원격으로 연결할 수 없습니다.

7

Linux에서는 모든 서버를 PHP가 중지하거나 시작할 수 있습니다. 물론, 인터넷에서 소켓을 받아들이는 서버를 운영한다면, 서버에 직접 연결해서 시스템을 종료 할 수 있습니다. PHP를 통해 갈 필요가 없습니다!

"PHP에서 서버 시작하기"와 마찬가지로, 리눅스에서는 거의 무엇이든 시작할 수 있습니다. 프로세스를 시작하고 데몬 모드로 빠져 나오기 만하면됩니다.

나는 Perl 팬이다. 놀랍지 만 Perl Daemon library available이 있습니다.

호스팅 제공 업체가 Perl 스크립트 지원을 제공하는 경우 "시스템"또는 backticks command을 사용할 권한이있는 것입니다. 그러면 데몬을 시작할 가능성이 높습니다. 그러나 비 특권 포트 (1024 이상)를 사용해야합니다. 또한, 먼저 물어보십시오! 서버에서 포트를 연결하는 것에 대해 감사하지 않을 수 있습니다. 이것은 확실히 당신이 당신의 접대 공급자와 토론해야하는 무언가이다.

+2

+1은 Perl :: Daemon을 언급합니다. OP가 코드를 작성하기 전에 호스팅 제공 업체와 논의해야한다고 동의하지만, 일반 공급 업체 서비스의 '냄새'와 관련된 요구 사항이라고 생각합니다. –