范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

有效提高ThinkPHP的应用性能的几点建议

  架构优化
  架构优化涉及到技术、存储、网络、服务的选型和构架,尽量使用成熟和现代的开发架构和设计模式。前后端完全分离设计,便于前后端的独立优化,也更加便于测试工作。
  如果你的应用遇到了性能瓶颈,这个时候要考虑的就是优化架构而不是优化代码本身,因为架构层面的优化效果往往是最显著的。
  架构的优化需要根据自身运营情况来调整,切忌不可按图索骥提前优化,反而容易得不偿失,导致技术成本提高甚至"负优化"  关闭调试模式
  部署环境千万不要忘记关闭调试模式,这不仅仅是出于性能考虑,更多是基于安全因素。事实上,建议通过环境变量来配置关闭调试模式,这样部署后不需要更改任何配置文件。
  因为调试模式影响日志记录信息、额外的调试信息和缓存失效,关闭调试模式能够带来一定的性能提升 使用单模块
  使用多模块功能会增加文件的 I/O  开销和额外的配置及检查,如非必要在规划你的应用架构的时候尽量考虑使用单一模块,然后使用控制器分级来解决控制器过多的问题。
  使用单一模块的性能优势,在部署到 swoole  的时候可以得到更加充分的体现,因为应用文件一旦启动服务,就会载入内存,而模块的相关文件则会每次请求重新加载。 路由设计及优化
  在定义路由规则的时候,不要使用数组方式,尽量使用方法注册路由,并且多使用路由分组(或者资源路由)。分组路由可以减少路由的匹配次数,从而提升路由性能。如果你有多个域名的不同路由,也要按域名规划使用路由。
  尽可能设计在路由中进行当前路由的数据验证和权限检查等操作,一方面比较清晰,另外一方面可以尽量把验证操作提前,而不必等到控制器执行。
  在分组比较多的情况下,开启路由的延迟解析。 // 开启路由延迟解析 "url_lazy_route"    => true,
  如果同一个分组下面有比较多的路由规则,建议合并路由规则 // 合并分组路由规则 "route_rule_merge"       => true,
  对于 GET  请求的路由,可以设置路由的请求缓存。 // 定义GET请求路由规则 并设置3600秒的缓存 Route::get("new/:id","News/read")->cache(3600);
  部署阶段,可以开启路由缓存。 // 开启路由缓存(仅部署模式有效) "route_check_cache"	=>	true,查询优化
  首先保持良好的开发习惯,了解 Db类和模型的正确使用姿势,数据库本身的性能优化可以参考 MySQL性能优化的最佳21条经验,下面主要是对框架中数据查询相关的优化策略。 合理使用查询缓存
  尽量减少每次请求的查询次数,并对实时性要求不高的数据查询合理规划数据查询缓存(优先考虑使用 Redis  缓存) Blog::where("id", 10)     ->cache(30)     ->find();
  如果使用了关联查询, cache  方法只能用于主模型的数据缓存,但你可以使用 Cache  类的 remember  方法进行方便的数据缓存。 $users = Cache::remember("users", function(){     return User::with("profile")         ->where("status", 1)         ->select(); },30);不要过于纠结查询次数
  尽量减少查询次数是出于性能考虑,但不是必须,使用最少的查询不代表性能就一定是最高。一个复杂的 JOIN  查询性能不见得有两次简单的查询高,而使用简单的查询反而更清晰易懂,并且更方便进行数据查询缓存。 正确使用模型关联
  不要总是以为模型的性能一定比 Db  类低,框架的ORM查询设计经过了较为合理的优化,正确使用模型一样可以有出色的性能,而且比 Db  查询要方便很多。
  尤其是对于一些复杂的设计来说使用模型关联显得比直接用Db更加简单,例如使用关联预载入查询就可以避免 N+1  查询问题。 User::with(["profile","book"])->select();
  如果用 Db  类自己实现的话,费时费力,性能还不一定优。 大量数据处理优化User::chunk(100, function($users) {     foreach ($users as $user) {         // 处理数据     } });
  对于内存开销比较大的应用,在做大量数据查询和处理的时候,使用 cursor  方法,可以利用PHP的生成器特性,减少内存占用。 $cursor = User::cursor(); foreach($cursor as $user){     // 处理数据 }
  你会发现用户数据不论是1万还是10万级别,内存开销并没有大的变化。
  涉及到对大量数据的处理,包括数据迁移、批量更新,尽量使用命令行指令运行,否则会因为超时而中断  善用数据集方法避免多次查询
  可以通过数据集的方法完成的子集或者排序操作不要再次查询,例如: // 模型查询返回数据集对象 $users = User::select(); // 按照用户的成绩由高到低排序 $list1 = $users->order("score", "desc"); // 筛选成绩在90分以上的用户 $list2 = $users->where("score", ">=", 90);字段缓存
  利用下面指令在部署后生成字段缓存,可以减少每次数据表的字段查询开销。 php think optimize:schema
  注意:一旦数据库的表结构发生变化,必须重新生成。  配置和公共文件缓存
  每次在应用初始化或者模块初始化的时候会有一定的 I/O  开销,如果已经开启 OpCache  的话对性能影响甚微,如果比较在意的也可以通过命令行指令生成配置缓存(包括相关的公共文件和各种定义文件)。
  生成应用配置缓存: php think optimize:config
  生成模块配置缓存: php think optimize:config index
  注意:一旦配置或者公共文件发生变化,必须重新生成。  生成类库映射
  类库映射可以提升类库的自动加载性能,使用下面的指令可以生成系统类库和应用类库的类库映射(包括 extend  目录下的类库)。 php think optimize:autoload
  vendor  目录下的类库可以使用 composer  的 dump-autoload  指令优化加载性能。 composer dump-autoload -o
  该命令把  PSR-0   和  PSR-4   转换为一个类映射表,来提高类的加载速度。

戴森推出DysonZone耳机,戴在头上的空气净化器IT之家3月30日消息,戴森今日宣布推出一款耳机,名为DysonZone,你可以理解为头戴式耳机空气净化器的二合一产品,官方给它的定义则是空气净化耳机。这款耳机支持主动降噪,内置戴启奥科技进北交所上市辅导期输血信息化企业拥有242项软件著作权挖贝网3月30日,新三板创新层公司启奥科技(831287)进入北交所上市辅导期,辅导机构为财达证券。3月22日,启奥科技与财达证券签订了北交所上市辅导协议,同日向河北证监局报送了辅爆款HiFi监听耳机飞利浦SHP9500特价419元如果你的预算有限,又想体验一下HiFi音质的话,那这款飞利浦(PHILIPS)SHP9500绝对是你进入HiFi世界的不二之选。SHP9500以极高的性价比一直在烧友们心中享有盛名等等党终究还是赢了!小米11Ultra限时降1500相机再次进化近期又有不少新机发布了,诸如RedmiK50系列,当然还有一个K40S突然冒出来有点让人措手不及,当然其他手机厂商也有很多好的手机,一些已经发布了,还有一些还在路上,总体来说,今年新能源物流车或迎爆发前夜2025年将突破200万辆?21世纪经济报道记者彭苏平上海报道新能源汽车开始在各个细分市场落地开花。来自电车资源的数据显示,2021年中国新能源物流车销量为13。12万辆,是2020年总销量58045辆的2。中国电信推出星卡随心版用户可随需订购新海南客户端南海网南国都市报3月30日消息(记者任桐)近期,中国电信推出满足个性化需求的星卡随心版,让用户可以在不同需求场景下,打破套餐思维,自由选择组合,随需订购。每个月总有流量对话零跑汽车当下仍需聚焦单车智能车路协同是一个锦上添花的过程,有这个东西可以大大改进单车智能上的一些容错能力,错误概率会大大降低,零跑汽车智能驾驶产品线总监王耀农在谈到智能驾驶路线时这样说道。经过长期的发展,智能阿里腾讯支付互联互通再进一步淘宝小范围开启微信支付内测(马秋月文)3月30日消息,继阿里旗下饿了么优酷等应用接入微信支付后,近日淘宝正针对小范围内开启对微信支付功能的内测,并在支付选项中新增了与微信支付相关的两种支付模式,分别是微信扫数据结构与算法手撕平衡二叉树平衡二叉树定义动机二叉查找树的操作实践复杂度由树高度决定,所以希望控制树高,左右子树尽可能平衡。平衡二叉树(AVL树)称一棵二叉查找树为高度平衡树,当且仅当或由单一外结点组成,或由比缺芯还严重!超90大陆市场被美企垄断,该警惕了当今电子产业的高速发展让人们的视线都集中在半导体产业上,尤其是自从华为的芯片由于芯片规则被修改而断供后,芯片问题更是国内热烈讨论的问题,引起了国家以及相关企业的重视。这一次华为的事神州控股2021年营收205。39亿港元,大数据产品收入增长1023月30日晚间,神州数码控股有限公司(简称神州控股股票代码00861。HK)发布了2021年度报告。报告显示,公司2021年营收205。39亿港元,归母净利润(扣除股份支付费用及少
小程序与App的区别App(iOSAndroid)小程序(微信,支付宝,头条,百度)开发语言苹果swift,安卓javaJavascript,HTML,CSS体积多数在几百兆控制在1兆3兆最佳入口苹果网信办要求不得利用大数据杀熟大数据杀熟是指同样的商品或服务,老客户看到的价格反而比新客户要贵出许多的现象。大数据杀熟现象主要是应用在互联网以及电商平台上面,而这样的现象已经破坏了整个游戏规则,甚至让很多老用户K8S之调度器精细控制Pod分布k8spod的调度可以通过污点容忍或者cpu内存资源需要来控制,但是这两种方法均有缺点,无法很好地精确控制pod调度到某节点的数量。需要规定某些节点对应这类型pod最多只能启动N个京东拿下虎年春晚独家互动合作伙伴北京商报讯(记者赵述评)1月5日,中央广播电视总台2022年春节联欢晚会独家互动合作项目发布会在京举行,宣布京东成为总台2022年春晚独家互动合作伙伴,双方将在红包互动电商等方面展iPhone14渲染图曝光!外观迎来巨大改变,刘海屏一去不复返手机设计步入全面屏时代之后,iPhone的全面屏产品都采用了刘海设计,明年iPhone14或迎来巨大改变,刘海屏或一去不复返了。苹果手机是不具备指纹识别功能的,而采用了3D人脸识别iPhone13大卖!苹果即将发布2022新财报果粉之家,专业苹果手机技术研究十年!您身边的苹果专家要说当前卖得最好的智能手机,非苹果公司的iPhone莫属了。虽然iPhone系列一年仅更新一次,但每年新iPhone推出后都会引iPhoneFold渲染图泄露,iPhone12让路新机惊现白菜价苹果首款可折叠手机预计将于2024年推出。科技媒体AppleInsider根据目前掌握的线索制作了高清渲染图,展示了其可能的外观。谣言和专利表明,苹果多年来一直在研究可折叠iPho亚马逊百万美元卖家你可以从他们身上学到的7件事出于类似的原因,亚马逊卖家倾向于开始他们的电子商务之旅。许多人想成为自己的老板,其他人寻求远程工作提供的灵活性,有些人只是好奇地尝试一下。几乎每个人都可以成功成为亚马逊卖家亚马逊8网文论网络文学与AI写作人机协同演化时代的文学之灵项蕾近几年来,人工智能业已成为一项常规的社会议题。自20162017连续两年谷歌围棋机器人AlphaGo与李世石柯洁两位世界级棋手举世瞩目的大战以来,人工智能似乎就从技术的高阁中走华为手机寿命到底有多久?这三类网友的回答太真实,说到心里去了华为手机的寿命始终让我们觉得是一个谜,因为我们可以看到网络上铺天盖地的用户,使用的基本上都是老款机型。甚至让我们一度以为,华为Mate20pro,以及华为Mate30pro是最近一阿里巴巴国际站实用小工具一谷歌上网助手谷歌上网助手是专门为科研外贸跨境电商海淘人员开发人员服务的上网加速工具,chrome内核浏览器专用,可以解决chrome扩展无法自动更新的问题,同时可以访问谷歌goo