经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
Laravel集成Swoole教程 - it-world
来源:cnblogs  作者:it-world  时间:2019/10/28 10:31:38  对本文有异议

1.准备工作

安装 Laravel

  1. laravel new laravel-swoole

 

   

本人使用 valet 进行开发,可以使用

  1. laravel-swoole.test

 

   

进行访问

2.引入 swoole

具体的 swoole 安装请移步官网进行下载,编译,安装,这里不多阐述了。

1. 在项目更目录创建一个 server 文件夹,然后在该文件夹中创建 http_server.php 文件,具体的文件内容如下

  1. <?php
  2.  
  3. $http = new swoole_http_server('127.0.0.1', 9501);
  4.  
  5. $http->set([
  6.  
  7. 'worker_num' => 8,
  8.  
  9. 'max_request' => 5000,
  10.  
  11. // 'document_root' => '/Users/apple/Code/Teacher_Project/swoole_live/resources/live/',
  12.  
  13. // 'enable_static_handler' => true,
  14.  
  15. ]);
  16.  
  17. //工作进程启动
  18.  
  19. $http->on('WorkerStart', function ($serv, $worker_id) {
  20.  
  21. //加载index文件的内容
  22.  
  23. require __DIR__ . '/../vendor/autoload.php';
  24.  
  25. require_once __DIR__ . '/../bootstrap/app.php';
  26.  
  27. });
  28.  
  29. //监听http请求
  30.  
  31. $http->on('request', function ($request, $response) {
  32.  
  33. //server信息
  34.  
  35. if (isset($request->server)) {
  36.  
  37. foreach ($request->server as $k => $v) {
  38.  
  39. $_SERVER[strtoupper($k)] = $v;
  40.  
  41. }
  42.  
  43. }
  44.  
  45. //header头信息
  46.  
  47. if (isset($request->header)) {
  48.  
  49. foreach ($request->header as $k => $v) {
  50.  
  51. $_SERVER[strtoupper($k)] = $v;
  52.  
  53. }
  54.  
  55. }
  56.  
  57. //get请求
  58.  
  59. if (isset($request->get)) {
  60.  
  61. foreach ($request->get as $k => $v) {
  62.  
  63. $_GET[$k] = $v;
  64.  
  65. }
  66.  
  67. }
  68.  
  69. //post请求
  70.  
  71. if (isset($request->post)) {
  72.  
  73. foreach ($request->post as $k => $v) {
  74.  
  75. $_POST[$k] = $v;
  76.  
  77. }
  78.  
  79. }
  80.  
  81. //文件请求
  82.  
  83. if (isset($request->files)) {
  84.  
  85. foreach ($request->files as $k => $v) {
  86.  
  87. $_FILES[$k] = $v;
  88.  
  89. }
  90.  
  91. }
  92.  
  93. //cookies请求
  94.  
  95. if (isset($request->cookie)) {
  96.  
  97. foreach ($request->cookie as $k => $v) {
  98.  
  99. $_COOKIE[$k] = $v;
  100.  
  101. }
  102.  
  103. }
  104.  
  105. ob_start();//启用缓存区
  106.  
  107. //加载laravel请求核心模块
  108.  
  109. $kernel = app()->make(Illuminate\Contracts\Http\Kernel::class);
  110.  
  111. $laravelResponse = $kernel->handle(
  112.  
  113. $request = Illuminate\Http\Request::capture()
  114.  
  115. );
  116.  
  117. $laravelResponse->send();
  118.  
  119. $kernel->terminate($request, $laravelResponse);
  120.  
  121. $res = ob_get_contents();//获取缓存区的内容
  122.  
  123. ob_end_clean();//清除缓存区
  124.  
  125. //输出缓存区域的内容
  126.  
  127. $response->end($res);
  128.  
  129. });
  130.  
  131. $http->start();

 

   

在路由文件加入路由:

  1. Route::get('/test1', 'UsersController@test');
  2.  
  3. Route::get('/test2','UsersController@test2');

 

   

在控制器添加方法:

  1. /**
  2.  
  3. * 测试1
  4.  
  5. * @param Request $request
  6.  
  7. * @return string
  8.  
  9. */
  10.  
  11. public function test(Request $request)
  12.  
  13. {
  14.  
  15. return view('test');#在你的视图文件夹创建test.blade.php
  16.  
  17. }
  18.  
  19. /**
  20.  
  21. * 测试2
  22.  
  23. * @param Request $request
  24.  
  25. * @return string
  26.  
  27. */
  28.  
  29. public function test2(Request $request)
  30.  
  31. {
  32.  
  33. return 'Hello World2:' . $request->get('name');
  34.  
  35. }

 

   

3. 启动 swoole

在终端下输入:

  1. php server/http_server.php

 

   

访问浏览器:

  1. http://127.0.0.1:9501/test1
  2.  
  3. http://127.0.0.1:9501/test2?name=Jelly

 

   

对应的结果如下:

访问 test1 路由

访问 test2 路由

原文链接:http://www.cnblogs.com/it-3327/p/11743769.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号