Rumah  >  Artikel  >  pembangunan bahagian belakang  >  swoole http server 实现跳转功能,并且程序可以不继续往下执行

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

WBOY
WBOYasal
2016-10-11 14:23:331856semak imbas

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

代码如下 

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

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

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

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

回复内容:

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

代码如下 

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

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

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

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

本来想说 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重启好像没什么影响.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn