>  기사  >  PHP 프레임워크  >  swoole은 fd를 저장하기 위해 무엇을 사용합니까?

swoole은 fd를 저장하기 위해 무엇을 사용합니까?

(*-*)浩
(*-*)浩원래의
2019-12-09 11:21:132835검색

swoole은 fd를 저장하기 위해 무엇을 사용합니까?

from_id는 어떤 리액터 스레드에서 나오는지입니다.

fd는 swoole_server에 있는 클라이언트의 고유 식별자인 tcp 연결의 파일 설명자입니다.                                                          의 연결이 닫히면 fd는 다음에 의해 재사용됩니다. 새로운 수신 연결유지되고 있는 TCP 연결 fd는 재사용되지 않습니다

swoole_server->send/swoole_server->close 함수 호출 시 $fd 매개변수를 전달해야 올바르게 처리됩니다.

비즈니스에서 브로드캐스트를 보내야 하는 경우 apc/redis/memcache/swoole_table을 사용하여 fd의 가치를 절약해야 합니다.

버전 1.6.0 이상에서는 from_id 매개변수가 더 이상 필요하지 않습니다. Swoole 자체는 모든 현재 fd 및 해당 from_id를 쿼리하는 ConnectionList를 제공합니다.

버전 1.7.10 이상에서는 fd가 더 이상 파일 설명자가 아닙니다. fd는 1에서 1,600만까지의 자동 증가 숫자입니다.

fd가 1,600만을 초과하면 1

function my_onReceive($serv, $fd, $from_id, $data)  {
    //向Connection发送数据
    $serv->send($fd, 'Swoole: '.$data); 
    //关闭Connection
    $serv->close($fd); 
}

$fdShaping을 사용하는 이유

$fd 객체 대신 shaping을 사용합니다. 주된 이유는 swoole이 다중 프로세스 모델이기 때문입니다. 작업자 프로세스/작업 프로세스에서 언제든지 클라이언트 연결에 액세스해야 할 수 있습니다. 추가 성능 오버헤드를 추가합니다. $fd가 정수이면 직접 저장 및 전송에 사용할 수 있습니다.

PHP 계층에서는 클라이언트 연결을 객체로 캡슐화할 수도 있습니다. 객체 지향의 장점은 읽기가 더 쉽고 연결 작업을 메서드로 캡슐화할 수 있다는 것입니다. 예:

$connection->send($data);
$connection->close();

위 내용은 swoole은 fd를 저장하기 위해 무엇을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.