복붙노트

PHP로 혜성을 사용하고 있습니까?

PHP

PHP로 혜성을 사용하고 있습니까?

PHP 백엔드를 사용하여 실시간 채팅을 구현할 생각 이었지만 혜성에 대해 토론하는 사이트에서이 설명을 읽었습니다.

사실입니까? 아니면 주위에 구성 할 수있는 무언가입니까?

해결법

  1. ==============================

    1.이미 말한 것을 동의 / 확대하면서 FastCGI가 문제를 해결할 것이라고 생각하지 않습니다.

    이미 말한 것을 동의 / 확대하면서 FastCGI가 문제를 해결할 것이라고 생각하지 않습니다.

    Apache 로의 각 요청은 요청이 완료 될 때까지 하나의 작업자 스레드를 사용하며, 이는 COMET 요청에 오랜 시간이 걸릴 수 있습니다.

    Ajaxian에 대한이 기사에서는 Apache에서 COMET을 사용하는 것에 대해 언급하고 있습니다. 이 문제는 PHP에만 국한되지 않으며 Apache에서 사용할 백엔드 CGI 모듈에 적용됩니다.

    제안 된 솔루션은 요청이 작업자 스레드로 발송되는 방식을 변경하는 '이벤트'MPM 모듈을 사용하는 것이 었습니다.

    불행히도 요청이 완료된 후 클라이언트에서 새로운 요청을 기다리는 동안에 만 '다시 울리기'때문에이 방법도 작동하지 않습니다.

    이제 문제의 다른 측면을 고려해보십시오. 혜 택 요청 당 하나의 스레드를 유지하면서 문제를 해결하더라도 요청 당 하나의 PHP 스레드가 필요합니다. 이것이 FastCGI가 도움이되지 않는 이유입니다.

    혜성의 요청이 촉발 된 사건이 ​​관찰 될 때 혜성의 요청이 재개되는 것을 허용하는 Continuations 같은 것이 필요하다. AFAIK, 이것은 PHP에서 가능한 것이 아닙니다. 필자는 Java로만 보았습니다. Apache Tomcat 서버를 참조하십시오.

    편집하다:

    로드 밸런서 (HAProxy)를 사용하여 동일한 서버의 포트 80에서 아파치 서버와 혜성 사용 서버 (예 : jetty, Java 용 Tomcat)를 모두 실행할 수있는 방법에 대한 기사가 있습니다.

  2. ==============================

    2.Nginx와 JavaScript를 사용하여 적은 메모리 또는 CPU 사용률로 확장 성이 뛰어난 Comet 기반 채팅 시스템을 구현할 수 있습니다.

    Nginx와 JavaScript를 사용하여 적은 메모리 또는 CPU 사용률로 확장 성이 뛰어난 Comet 기반 채팅 시스템을 구현할 수 있습니다.

    여기에 당신을 시작할 수있는 아주 간단한 예가 있습니다. NHPM 모듈로 Nginx 컴파일을 다루고 jQuery, PHP 및 Bash에서 간단한 게시자 / 구독자 역할을위한 코드를 포함합니다.

    http://blog.jamieisaacs.com/2010/08/27/comet-with-nginx-and-jquery/

  3. ==============================

    3.나는이 재미있는 작은 스크린 캐스트가 간단한 혜성을 설명하는 것을 발견했다. 사이드 노트로서 나는 이것이 정말로 실제 부하에서 서버를 죽일 것이라고 생각합니다. 몇 명의 사용자가있을 때이 솔루션을 사용한다고 말합니다. 이 솔루션은 구현하기가 정말 간단합니다 (스크린 캐스트는 5 분이 소요됩니다 :)). 그러나 내가 이전에 말했듯이, 많은 동시 사용자 (그것이 벤치 마크해야한다고 생각하십니까?) 때문에 좋다고 생각하지 않습니다. 왜냐하면 :

    나는이 재미있는 작은 스크린 캐스트가 간단한 혜성을 설명하는 것을 발견했다. 사이드 노트로서 나는 이것이 정말로 실제 부하에서 서버를 죽일 것이라고 생각합니다. 몇 명의 사용자가있을 때이 솔루션을 사용한다고 말합니다. 이 솔루션은 구현하기가 정말 간단합니다 (스크린 캐스트는 5 분이 소요됩니다 :)). 그러나 내가 이전에 말했듯이, 많은 동시 사용자 (그것이 벤치 마크해야한다고 생각하십니까?) 때문에 좋다고 생각하지 않습니다. 왜냐하면 :

    혜성 / 긴 폴링을하고 싶다면 대안을 시도해야한다고 생각합니다. 예를 들어 다음과 같이 여러 언어를 사용할 수 있습니다.

    그냥 간단한 구글 검색을 수행하면 많은 대안 또한 PHP (어떤 큰 부하가 귀하의 서버를 죽일 것이라고 생각)을 보여줍니다.

  4. ==============================

    4.mod_php만이 PHP를 사용하는 유일한 방법은 아닙니다. fastcgi를 사용할 수 있습니다. PHP는 --enable-fastcgi로 컴파일해야합니다.

    mod_php만이 PHP를 사용하는 유일한 방법은 아닙니다. fastcgi를 사용할 수 있습니다. PHP는 --enable-fastcgi로 컴파일해야합니다.

    FastCGI로서의 PHP : http://www.fastcgi.com/drupal/node/5?q=node/10

  5. ==============================

    5.https://github.com/reactphp/react를 사용해보십시오.

    https://github.com/reactphp/react를 사용해보십시오.

    첫 번째 예에서는 포트 1337에서 수신 대기하는 간단한 HTTP 서버를 보여줍니다.

    <?php
    
    $i = 0;
    
    $app = function ($request, $response) use (&$i) {
        $i++;
    
        $text = "This is request number $i.\n";
        $headers = array('Content-Type' => 'text/plain');
    
        $response->writeHead(200, $headers);
        $response->end($text);
    };
    
    $loop = React\EventLoop\Factory::create();
    $socket = new React\Socket\Server($loop);
    $http = new React\Http\Server($socket);
    
    $http->on('request', $app);
    
    $socket->listen(1337);
    $loop->run();
    
  6. ==============================

    6.비슷한 문제가 있습니다. 필자가 흥미로운 한 가지 옵션은 cometd-java 또는 cometd-python과 같은 기존 Comet 서버를 핵심 메시지 허브로 사용하는 것입니다. 따라서 PHP 코드는 Comet 서버의 클라이언트 일뿐입니다. 다른 클라이언트와 마찬가지로 채널에서 메시지를 게시하거나 읽을 수 있습니다.

    비슷한 문제가 있습니다. 필자가 흥미로운 한 가지 옵션은 cometd-java 또는 cometd-python과 같은 기존 Comet 서버를 핵심 메시지 허브로 사용하는 것입니다. 따라서 PHP 코드는 Comet 서버의 클라이언트 일뿐입니다. 다른 클라이언트와 마찬가지로 채널에서 메시지를 게시하거나 읽을 수 있습니다.

    http://morglog.org/?p=22=1이 방법의 일부를 구현하는 흥미로운 코드 스 니펫이 있습니다 (디버그 코드가 약간 퍼져 있지만).

  7. ==============================

    7.현재 소켓 기능을 사용하여 확장 가능한 PHP Comet 서버를 구현하고 있습니다. 그것은 '펫 (phet)'이라고 불린다.

    현재 소켓 기능을 사용하여 확장 가능한 PHP Comet 서버를 구현하고 있습니다. 그것은 '펫 (phet)'이라고 불린다.

    프로젝트 페이지 : http://github.com/Tim-Smart/phet

    무료로 개발에 참여하십시오. 나는 현재 대부분의 서버 로직을 처리 할 수 ​​있었지만, 클라이언트 측 작업을 끝내기 만하면된다.

    수정 : 최근 pcntl_fork 메서드를 사용하여 '멀티 스레딩'기능을 추가했습니다 :)

  8. ==============================

    8.여러분은 PHP에서 혜성을 구현하는 데 어려움을 겪을 것입니다. 왜냐하면 그것은 단지 하나의 고유 한 단일 스레드이기 때문입니다.

    여러분은 PHP에서 혜성을 구현하는 데 어려움을 겪을 것입니다. 왜냐하면 그것은 단지 하나의 고유 한 단일 스레드이기 때문입니다.

    Websync On-Demand를 확인하십시오 -이 서비스를 사용하면 서버 측 게시를 통해 PHP를 통합 할 수 있으며 대량의 동시 연결 항목을 오프로드 할 수 있으며 실시간으로 채팅 앱을 만들 수 있습니다.

  9. ==============================

    9.새로운 모듈이 방금 PHP를 포함한 모든 언어로 Comet을 허용 할 nginx 웹 서버를 위해 나왔습니다.

    새로운 모듈이 방금 PHP를 포함한 모든 언어로 Comet을 허용 할 nginx 웹 서버를 위해 나왔습니다.

    http://www.igvita.com/2009/10/21/nginx-comet-low-latency-server-push/

  10. ==============================

    10.PHP로 서버를 직접 만들어야합니다. 아파치 / mod_php 또는 심지어 fastcgi를 사용하면 확장되지 않습니다. 몇 살이지만 시작할 수 있습니다.

    PHP로 서버를 직접 만들어야합니다. 아파치 / mod_php 또는 심지어 fastcgi를 사용하면 확장되지 않습니다. 몇 살이지만 시작할 수 있습니다.

    PHP-Comet-Server : http://sourceforge.net/projects/comet/

  11. ==============================

    11.나는이 문제가 항상 아파시 스레드를 많이 가지고 문제가 있다고 생각합니다. 그것은 PHP와 같은 방식으로 아파치를 통해 작동한다면 (보통) 모든 언어로 존재할 것입니다.

    나는이 문제가 항상 아파시 스레드를 많이 가지고 문제가 있다고 생각합니다. 그것은 PHP와 같은 방식으로 아파치를 통해 작동한다면 (보통) 모든 언어로 존재할 것입니다.

  12. from https://stackoverflow.com/questions/603201/using-comet-with-php by cc-by-sa and MIT license