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

php中文网
发布: 2016-10-11 14:23:33
原创
2018人浏览过

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

代码如下 

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

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

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

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

行者AI
行者AI

行者AI绘图创作,唤醒新的灵感,创造更多可能

行者AI 100
查看详情 行者AI

回复内容:

使用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重启好像没什么影响.

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号