探讨关于TP执行一个方法对性能的影响

下面thinkphp框架教程栏目将给大家介绍关于tp执行方法要引入这么多个文件对性能的影响,希望对需要的朋友有所帮助!

具体问题:

thinkphp为啥执行一个方法要引入这么多个文件,对性能有何影响?

如题,在thinkphp中某方法只输出一个echo 1, 发现要引入的文件很多,这对服务造成什么影响。

遇到并发大时候该如何优化?

array(63) {   [0]=>   string(43) "{MY_SITE}/index.php"   [1]=>   string(52) "{MY_SITE}/thinkphp/start.php"   [2]=>   string(51) "{MY_SITE}/thinkphp/base.php"   [3]=>   string(67) "{MY_SITE}/thinkphp/library/think/Loader.php"   [4]=>   string(73) "{MY_SITE}/vendor/composer/autoload_namespaces.php"   [5]=>   string(67) "{MY_SITE}/vendor/composer/autoload_psr4.php"   [6]=>   string(71) "{MY_SITE}/vendor/composer/autoload_classmap.php"   [7]=>   string(68) "{MY_SITE}/vendor/composer/autoload_files.php"   [8]=>   string(80) "{MY_SITE}/vendor/symfony/polyfill-mbstring/bootstrap.php"   [9]=>   string(86) "{MY_SITE}/vendor/guzzlehttp/promises/src/functions_include.php"   [10]=>   string(78) "{MY_SITE}/vendor/guzzlehttp/promises/src/functions.php"   [11]=>   string(82) "{MY_SITE}/vendor/guzzlehttp/psr7/src/functions_include.php"   [12]=>   string(74) "{MY_SITE}/vendor/guzzlehttp/psr7/src/functions.php"   [13]=>   string(84) "{MY_SITE}/vendor/guzzlehttp/guzzle/src/functions_include.php"   [14]=>   string(76) "{MY_SITE}/vendor/guzzlehttp/guzzle/src/functions.php"   [15]=>   string(78) "{MY_SITE}/vendor/topthink/think-captcha/src/helper.php"   [16]=>   string(66) "{MY_SITE}/thinkphp/library/think/Route.php"   [17]=>   string(67) "{MY_SITE}/thinkphp/library/think/Config.php"   [18]=>   string(69) "{MY_SITE}/thinkphp/library/think/Validate.php"   [19]=>   string(77) "{MY_SITE}/vendor/topthink/think-helper/src/helper.php"   [20]=>   string(69) "{MY_SITE}/vendor/yfcmf/geetest/src/helper.php"   [21]=>   string(78) "{MY_SITE}/vendor/qiniu/php-sdk/src/Qiniu/functions.php"   [22]=>   string(75) "{MY_SITE}/vendor/qiniu/php-sdk/src/Qiniu/Config.php"   [23]=>   string(80) "{MY_SITE}/vendor/overtrue/wechat/src/Payment/helpers.php"   [24]=>   string(66) "{MY_SITE}/thinkphp/library/think/Error.php"   [25]=>   string(57) "{MY_SITE}/thinkphp/convention.php"   [26]=>   string(64) "{MY_SITE}/thinkphp/library/think/App.php"   [27]=>   string(68) "{MY_SITE}/thinkphp/library/think/Request.php"   [28]=>   string(48) "{MY_SITE}/app/config.php"   [29]=>   string(54) "{MY_SITE}/data/conf/config.php"   [30]=>   string(50) "{MY_SITE}/app/database.php"   [31]=>   string(65) "{MY_SITE}/thinkphp/library/think/Hook.php"   [32]=>   string(46) "{MY_SITE}/app/tags.php"   [33]=>   string(48) "{MY_SITE}/app/common.php"   [34]=>   string(64) "{MY_SITE}/thinkphp/library/think/Env.php"   [35]=>   string(53) "{MY_SITE}/thinkphp/helper.php"   [36]=>   string(65) "{MY_SITE}/thinkphp/library/think/Lang.php"   [37]=>   string(67) "{MY_SITE}/thinkphp/library/think/Cookie.php"   [38]=>   string(64) "{MY_SITE}/thinkphp/library/think/Log.php"   [39]=>   string(57) "{MY_SITE}/thinkphp/lang/zh-cn.php"   [40]=>   string(52) "{MY_SITE}/app/lang/zh-cn.php"   [41]=>   string(53) "{MY_SITE}/app/home/config.php"   [42]=>   string(57) "{MY_SITE}/app/home/lang/zh-cn.php"   [43]=>   string(61) "{MY_SITE}/app/home/controller/Bet.php"   [44]=>   string(62) "{MY_SITE}/app/home/controller/Base.php"   [45]=>   string(66) "{MY_SITE}/app/common/controller/Common.php"   [46]=>   string(71) "{MY_SITE}/thinkphp/library/think/Controller.php"   [47]=>   string(77) "{MY_SITE}/thinkphp/library/traits/controller/Jump.php"   [48]=>   string(65) "{MY_SITE}/thinkphp/library/think/View.php"   [49]=>   string(78) "{MY_SITE}/thinkphp/library/think/view/driver/Think.php"   [50]=>   string(69) "{MY_SITE}/thinkphp/library/think/Template.php"   [51]=>   string(81) "{MY_SITE}/thinkphp/library/think/template/driver/File.php"   [52]=>   string(66) "{MY_SITE}/thinkphp/library/think/Cache.php"   [53]=>   string(78) "{MY_SITE}/thinkphp/library/think/cache/driver/File.php"   [54]=>   string(73) "{MY_SITE}/thinkphp/library/think/cache/Driver.php"   [55]=>   string(68) "{MY_SITE}/thinkphp/library/think/Session.php"   [56]=>   string(63) "{MY_SITE}/thinkphp/library/think/Db.php"   [57]=>   string(79) "{MY_SITE}/thinkphp/library/think/db/connector/Mysql.php"   [58]=>   string(74) "{MY_SITE}/thinkphp/library/think/db/Connection.php"   [59]=>   string(69) "{MY_SITE}/thinkphp/library/think/db/Query.php"   [60]=>   string(77) "{MY_SITE}/thinkphp/library/think/db/builder/Mysql.php"   [61]=>   string(71) "{MY_SITE}/thinkphp/library/think/db/Builder.php"   [62]=>   string(66) "{MY_SITE}/thinkphp/library/think/Debug.php" }

网友回答:

使用框架本来就是牺牲些性能获取开发效率的。TP框架内部耦合度很高,因此性能比起其他框架还好呢。

看上面加载的文件,你应该使用的是TP5,TP5中使用到的是懒性加载,这种方式只在需要的时候才加载相关的类文件,相比于3.x性能上提升了不少。

另外一种就是缓存。TP3.X能够将所有的要包含的文件打包成一个文件,这样就避免了多次加载。不过在TP5是模板才有缓存。

高并发下,可以使用APC,提高硬件,使用nginx之类。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享