lumen Symfony\Component\HttpKernel\Exception\NotFoundHttpException

25ma.cn 发表了文章 • 0 个评论 • 763 次浏览 • 2020-03-09 14:16 • 来自相关话题

记一次 lumen开发中遇到的坑[code]前景:

[2020-03-09 14:02:04] local.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException in /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php:233
Stack trace:
#0 /mnt/hgfs/netmarble/GalaxyMxS 查看全部
记一次 lumen开发中遇到的坑
前景:

[2020-03-09 14:02:04] local.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException in /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php:233
Stack trace:
#0 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(170): Laravel\Lumen\Application->handleDispatcherResponse(Array)
#1 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(420): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}(Object(Laravel\Lumen\Http\Request))
#2 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(172): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#3 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(109): Laravel\Lumen\Application->dispatch(NULL)
#4 /mnt/hgfs/netmarble/GalaxyMxSDK/api/public/index.php(28): Laravel\Lumen\Application->run()
#5 {main} {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): at /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php:233)
[stacktrace]
#0 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(170): Laravel\\Lumen\\Application->handleDispatcherResponse(Array)
#1 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(420): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(Object(Laravel\\Lumen\\Http\\Request))
#2 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(172): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))
#3 /mnt/hgfs/netmarble/GalaxyMxSDK/api/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(109): Laravel\\Lumen\\Application->dispatch(NULL)
#4 /mnt/hgfs/netmarble/GalaxyMxSDK/api/public/index.php(28): Laravel\\Lumen\\Application->run()
#5 {main}
"}

 
通过堆栈信息了解到,该错误是从 
vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(170): Laravel\Lumen\Application->handleDispatcherResponse(Array)

触发,随后就打印这个方法下的170行,查看是什么路由触发的这个错误

微信图片_20200309141126.png

 
看到日志中的结果是:


微信截图_20200309141340.png


 
然后 第一反映这个不是浏览器请求的时候,默认的一次获取icon的请求么。
接着去查看一下 public 目录下有没有这个文件
 
或者还有其他解决方式可以留言,谢谢
 

微信图片_20200309141912.png


直接从其他项目复制了这个 favicon.ico 到根目录,结果问题得到解决
 

PHP7性能测试工具—xhprof 的安装以及性能测试

25ma.cn 发表了文章 • 0 个评论 • 1410 次浏览 • 2018-12-14 16:01 • 来自相关话题

xhprof 是 Facebook 09 年出的一个很优秀的 PHP profiler 工具,但 Facebook 后来迁移到 hhvm,早已不再维护,它在 PHP7 下有诸多 bug。
使用兼容的 xhprof 安装
?
xhprof已经很久没有更新了,使用他人的repo[^1]:
[list=1]
[*][cod 查看全部
xhprof 是 Facebook 09 年出的一个很优秀的 PHP profiler 工具,但 Facebook 后来迁移到 hhvm,早已不再维护,它在 PHP7 下有诸多 bug。
  • 使用兼容的 xhprof 安装

?
xhprof已经很久没有更新了,使用他人的repo[^1]:
  1. cd ~ git clone https://github.com/longxinH/xhprof
  2.  cd xhprof/extension
  3. 使用phpize 安装php扩展:
  4. 执行 phpize
    [root@25ma_cn extension]# /usr/local/php/bin/phpize Configuring for:PHP Api Version:         20151012Zend Module Api No:      20151012Zend Extension Api No:   32015101
  5.  --with-php-config 这里的值是当前php安装的具体位置  ./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof
  6. make && make install
  7. 安装完成之后会出现 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
  8. 修改php.ini 配置文件,将 xhprof.so 以及配置添加到做末尾  [xhprof]extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/xhprof.so;xhprof.output_dir=/mnt/hgfs/xhprofs/xhprof_output #表示输出目录
  9. 重启:linux  php-fpm service php-fpm restart
  10. 检查是否安装成功php71 -m | grep xhprof 返回如下:[root@25ma_cn tmp]# php -m |grep xhprofxhprof 表示安装成功了

?
  • NGINX 配置访问

  1. 配置这个nginx主要是用来收集和展示性能测试的数据
  2. 创建文件夹
  3. mkdir -p /mnt/hgfs/xhprofs
  4. nginx 配置如下:
  5. QQ截图20181214161912.png
  6. 如果nginx里面配置的是域名访问还需要在本地hosts 里面配置 IP和域名的映射,例如:#php性能测试工具192.168.227.81		xhprof.gamesweb.com
  7. 重启nginx service nginx restart
  8. 测试下是否配置ok,可以在nginx 配置的目录新建一个index.php 里面写上如下代码:<php phpinfo();die;>
  9. 打印的是phpinfo 相关配置信息 ,然后搜索 xhprof 能找到就ok
  10.  将xhprof的安装目录xhprof_lib 和 xhprof_html以及 examples 文件夹复制到 /mnt/hgfs/xhprofs/ 
  11. 然后访问 http://your_host/xhprof_html/index.php 即可
  12. 安装和配置已经完成了,接下来我们要进行php代码的性能测试
  13. 首先,我先简单说下性能测试代码如何添加
  14. QQ截图20181214161849.png
  15. 执行添加了性能测试的php脚本文件 http://your_host/xhprof_html/examples/sample.php
  16. QQ截图20181214161901.png
  17. 证明已经有php性能测试文件生成了
  18. 访问 url : http://your_host/xhprof_html/index.php
  19. QQ截图20181214155759.png
  20. 然后点击:测试报告

? ? ?
QQ截图20181214155914.png

  • 性能点 描述

?
  1. Incl. 表示Including(包含)的缩写
  2. Excl. 表示Excluding(不包含)的缩写
  3. Function Name: 函数名
  4. Calls: 调用次数
  5. Calls%: 调用次数的百分比(图中带有百分比符号的字段皆表示百分比的意思,所以后面不在介绍)
  6. Incl. Wall Time: 包含子函数执行的所有花费时间。单位:微秒(下同)
  7. Excl. Wall Time: 函数本身执行所花费的时间。
  8. Incl. CPU: 包含子函数执行的所花费的CPU时间。
  9. Excl. CPU: 函数本身执行所花费的CPU时间。
  10. Incl.MemUse: 包含子函数执行的所占用的内存。单位:字节(下同)
  11. Excl.MemUse: 函数本身执行所占用的内存。
  12. Incl.PeakMemUse: 包含子函数执行,所占用内存的峰值。
  13. Excl.PeakMemUse: 函数本身执行所占用内存的峰值。

?
[^1]: 除了 xhprof issue 和某博文提到了一些替代 repo,还有 tideways 等,大家自行研究

如果在测试的过程中遇到问题都可以将问题回复到帖子下方,我们一起解决
?

Yii2实现动态修改组件配置信息

25ma.cn 发表了文章 • 0 个评论 • 1380 次浏览 • 2018-10-12 09:48 • 来自相关话题

本教程是在yii2.0 及以上版本进行试验,其他版本的大家可以根据自身配置修改,原理都是一样
[list]
[*]我遇到的问题是在处理CDN组件配置的时候,默认是不适用cdn,配置如下:



[/*]
[*]然而我们在后台有准备开启CDN 查看全部
本教程是在yii2.0 及以上版本进行试验,其他版本的大家可以根据自身配置修改,原理都是一样
  • 我遇到的问题是在处理CDN组件配置的时候,默认是不适用cdn,配置如下:
    QQ图片20181012093035.png
  • 然而我们在后台有准备开启CDN功能:
    QQ图片20181012093302.png
  • 怎么办呢,我们可以直接在配置文件初始化的时候加上如下代码即可:

? ? ? ? ?
QQ截图20181012094903.png

ps: 在使用合并yii::configure() 合并配置的时候,如果你只想合并某一个组件的配置,那第一个参数就是 yii::$app->组件名。如果需要合并多个配置的话 只需要自己组装一个数组。以componets为下标,然后二维数组就是组件名去配置就可以的
  • 如果有不明白的欢迎加QQ 405108246