>  기사  >  백엔드 개발  >  swoole http 서버는 점프 기능을 구현하므로 프로그램을 계속 실행할 필요가 없습니다.

swoole http 서버는 점프 기능을 구현하므로 프로그램을 계속 실행할 필요가 없습니다.

WBOY
WBOY원래의
2016-10-11 14:23:331821검색

swoole_http_response 메소드 헤더, 상태, 종료를 사용하여 점프를 달성하세요

코드는 다음과 같습니다

<code>  public function redirect($url)
    {
        $this->header("Location", $url);
        $this->status(302);
        return $this->end('');
    }</code>

그러나 리디렉션()을 사용한 후에는 프로그램이 중단되지 않고 계속 실행됩니다.

나중에 프로그램이 계속 실행되지 않도록 예외를 발생시켜 프로그램을 중단했지만 이 방법으로 인해 작업자가 다시 시작되었습니다.

질문: 페이지 점프 후 즉시 프로그램을 중단하고 실행을 계속하지 않지만 페이지가 즉시 점프하도록 하는 좋은 방법이 있습니까? 프로그램을 중단시키기 위해 예외를 던지는 메소드를 사용하지 않아야 합니다

답글 내용:

점프를 달성하려면 swoole_http_response 메소드 헤더, 상태, 끝을 사용하세요

코드는 다음과 같습니다

<code>  public function redirect($url)
    {
        $this->header("Location", $url);
        $this->status(302);
        return $this->end('');
    }</code>

그러나 리디렉션()을 사용한 후에는 프로그램이 중단되지 않고 계속 실행됩니다.

나중에 프로그램이 계속 실행되지 않도록 예외를 발생시켜 프로그램을 중단했지만 이 방법으로 인해 작업자가 다시 시작되었습니다.

질문: 페이지 점프 후 즉시 프로그램을 중단하고 실행을 계속하지 않지만 페이지가 즉시 점프하도록 하는 좋은 방법이 있습니까? 프로그램을 중단시키기 위해 예외를 던지는 메소드를 사용하지 않아야 합니다

exit(0)이라고 말하고 싶었는데 좀 잘못된 느낌이었습니다

저는 swoole을 사용해본 적이 없고, swoole 문서만 봤습니다.

swoole_http_response->end
Http 응답 본문을 보내고 요청 처리를 종료합니다.
swoole_http_response->end(string $html);
종료 작업 후 HTML 콘텐츠가 클라이언트 브라우저로 전송되고 $request/$response 개체가 삭제됩니다.
KeepAlive가 켜져 있는 경우 켜면 연결이 유지되고 서버는 다음 요청을 기다립니다.
KeepAlive가 활성화되지 않으면 서버가 연결을 끊습니다

end() 이후에는 $response 객체가 소멸되고 http 응답이 완료되며 비즈니스 코드가 실행되지 않아야 합니다.

http://wiki.swoole.com/wiki/p...
리액터는 nginx, 워커는 php-fpm으로 이해하시면 됩니다. 리액터 스레드는 네트워크 요청을 비동기식 및 병렬로 처리한 다음 처리를 위해 작업자 프로세스에 전달합니다. 원자로와 작업자는 IPC를 통해 통신합니다.

Swoole의 리액터, 워커, task_worker를 긴밀하게 결합하여 더욱 발전된 활용도를 제공할 수 있습니다.

더 일반적인 비유로, 서버가 공장이고 리액터가 판매라고 가정하면 프로젝트 주문을 받는 데 도움이 됩니다. 영업사원이 주문을 받으면 작업자는 고객이 원하는 것을 생산하기 위해 출근합니다. Task_worker는 근로자가 업무에 집중할 수 있도록 일부 집안일을 도와줄 수 있는 행정직원으로 이해될 수 있습니다.

Waker를 다시 시작해도 효과가 없는 것 같습니다.

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