찾다

 >  Q&A  >  본문

php - swoole http server 实现跳转功能,并且程序可以不继续往下执行

使用swoole_http_response方法header,status,end可以实现跳转

代码如下 

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

但是使用redirect()后,程序没有中断,还是继续往下执行,

后来我用抛出异常的的方法中断了程序,不让他继续往后执行,不过这样的方法造成worker重启,

问题: 有没有好的办法,页面跳转后,程序就马上中断,不会继续执行,页面马上跳转?要求不使用抛出异常的的方法中断程序

怪我咯怪我咯2791일 전785

모든 응답(1)나는 대답할 것이다

  • 阿神

    阿神2017-04-11 10:40:17

    本来想说 exit(0)的 ,感觉有点不对

    没用过swoole , 刚才看了一下swoole 的文档 ,

    swoole_http_response->end
    发送Http响应体,并结束请求处理。
    swoole_http_response->end(string $html);
    end操作后将向客户端浏览器发送HTML内容,并销毁$request/$response对象
    如果开启了KeepAlive,连接将会保持,服务器会等待下一次请求
    未开启KeepAlive,服务器将会切断连接

    end() 之后 $response 对象被销毁 , http的响应算是完成了 , 业务代码应该也不会执行了.

    http://wiki.swoole.com/wiki/p...
    可以理解为reactor就是nginx,worker就是php-fpm。reactor线程异步并行地处理网络请求,然后再转发给>worker进程中去处理。reactor和worker间通过IPC方式通信。

    swoole的reactor,worker,task_worker之间可以紧密的结合起来,提供更高级的使用方式。

    一个更通俗的比喻,假设Server就是一个工厂,那reactor就是销售,帮你接项目订单。而worker就是工人,当销>售接到订单后,worker去工作生产出客户要的东西。而task_worker可以理解为行政人员,可以帮助worker干些杂>事,让worker专心工作。

    woker重启好像没什么影响.

    회신하다
    0
  • 취소회신하다