时间:2022-11-03 07:26:31 | 浏览:8585
PHP代码优化最佳实践
编写好的PHP代码是创建快速稳定Web应用的关键一步。从一开始就遵循一些最佳实践技巧将节省后期填坑的时间。
1. 尽可能的使用PHP的内置方法
只要可以尽可能的使用PHP的内置方法,而不是自己编写相同功能的方法。花点时间去熟悉和学习PHP的内置方法,不但可以帮助你更快的编写代码,而且可以使你编写的代码更高效的运行。
2. 使用Json替代xml
json_encode()和json_decode() 等PHP的内置方法,运行速度都非常快,所有应该优先使用Json。如果你无法避免使用xml,那么请务必使用正则表达式而不是DOM操作来进行解析。
3. 使用缓存技术
Memcache特别适用于减少数据库负载,而像APC或OPcache这样的字节码缓存引擎在脚本编译时可节省执行时间。
4. 减少不必要的计算
当一个变量会被多次使用时,一开始就计算好,肯定要比每次使用时都计算一遍要更高效。
5. 使用isset()和empty()
与count()、strlen()和sizeof()函数相比,isset()和empty()对于检测一个变量是否为空等场景更加简单和高效。
6. 减少不必要的类
如果你不打算重复使用一个类或者方法,那么它就没什么存在的价值。而如果你必须要定义和使用一个类,则需要合理规划类中的方法,对于不是特别公用的方法,尽量将他们放到子类中去,因为调用子类中的方法,比调用父类方法速度更快。
7. 在生产环境关闭用作调试的相关代码及错误报告
开发时打开错误报告,可以让你避免很多潜藏的Bug,而一些调试代码也有助于你定位Bug,但是当代码部署到生产环境后,这些错误报告和调试代码会拖慢你的程序速度,而且将一些错误报告直接显示给用户,也具有相当的安全风险。因此,在生产环境请关闭它们。
8. 关闭数据库连接
当使用完毕后,注销变量和关闭数据库连接,可以释放珍贵的内存资源。
9. 使用聚合函数减少数据库查询
查询数据库时,使用聚合函数,可以减少检索数据库的频率,并且使程序运行的更快。
10. 使用强大的字符串操作函数
举个例子,str_replace()比preg_replace()要快,而strtr()函数则比str_replace()函数快四倍。
11. 尽量使用单引号
如果可能,尽量使用单引号替代双引号。程序运行时,会检查双引号中的变量,这会拖慢程序的性能。
12. 尝试使用恒等运算符
由于“===”仅检查闭合范围,因此比使用“==”进行比较速度更快。
PHP代码之外的性能瓶颈因素
优化代码当然能够提高PHP的性能。但是,还有一些代码之外的因素也会成为PHP的性能瓶颈。这就是为什么程序员需要了解代码部署的整个服务器环境,这有助于他们在编写代码时有一定的心理准备,并能够在性能出现问题时,快速识别和定位性能瓶颈。以下是你遇到性能瓶颈时需要检查的点。
1. 网络带宽
如果网络带宽不够,其传输的总数据量将会受到严重影响,使其成为最明显的性能瓶颈。
2. CPU
如果只是传输一些纯静态的HTML,则不需要消耗很多CPU资源,但是PHP毕竟创建的是动态的应用程序,根据应用的需要,你可能至少需要一台具备多核处理器的服务器来提升PHP代码的运行效率。
3. 共享内存
缺少共享内存可能会影响进程间通信,从而影响程序性能。
4. 文件系统
随着时间推移,你的文件系统可能会出现大量磁盘碎片。如果内存足够,利用内存作为文件缓存可以加快磁盘的访问速度。
5. 进程管理
检查服务器的进程,确保里面没有非必要的进程。移除哪些不需要的网络协议、病毒扫描软件、邮件服务以及硬件驱动。将PHP代码运行在多线程模式,也能提高程序的响应时间。
6. 相关的其它服务
如果你的应用程序还依赖于一些外部服务,那这些外部服务的性能瓶颈也有可能拖慢你的应用。虽然这种情况下你能做的事情不多,但你仍然可以通过你这一边的操作来减轻外部服务性能瓶颈对你的影响,例如切换到备用服务上等。
更多PHP性能优化建议
1. 发挥OPCache的优势
由于默认情况下,PHP代码在执行时都会重新编译为可执行的中间代码OPCode,因此可以及时看到修改的代码所带来的变化,而不必频繁的重启PHP服务。不幸的是,如果每次在你的网站上运行时,都重新编译相同的代码会严重影响服务器的性能,这就是为什么opcode缓存或OPCache 非常有用。
OPCache是一个将编译好的代码保存到内存中的扩展。因此,下一次代码执行时,PHP将检查时间戳和文件大小,以确定源文件是否已更改。如果没有,则直接运行缓存的代码。
下图显示了运行无缓存的PHP应用程序,OPcache和eAccelerator(另一个PHP缓存工具)三者的执行时间和内存使用情况的差异。
图片来源: Prestashop
2. 识别数据库响应延迟
如上所述,性能问题并不总是由代码引起的。大多数瓶颈都出现在应用程序必须访问资源的时候。由于PHP应用程序的数据访问层可能占用最高90%的执行时间,因此你应该采取的第一步是查看代码中访问数据库的所有实例。
确保打开SQL的慢日志,以帮助你识别和处理慢SQL,然后评估这些查询的执行效率。如果你发现查询过多,或者在单次执行过程中发现相同的查询被多次进行,你可以通过减少数据库访问时间进行调整,从而提高应用程序的性能。
3. 清理文件系统
清理文件系统,并确保没有使用文件系统来存储Session。最重要的是,请注意file_exists(),filesize()或filetime()等触发文件统计信息的代码。将任何这些功能置于循环中可能会导致性能问题。
4. 监控外部API接口
大部分对外部系统有依赖关系的应用都会调用远程API。虽然这些远程API接口你无法直接控制,但你仍可以采取一些措施来减轻源自远程API的性能问题。例如,你可以缓存API输出的数据,或者可以在后台调用这些API。为API请求设置合理的超时时间,并且如果可能的话,随时做好API没有响应的情况下的显示输出。
5. 使用工具评估检测你的PHP代码
使用OPcache和监控外部API接口应该足以使大多数应用程序运行顺利;但是,如果你发现系统负载不断增加,那么可能需要使用工具来对你的PHP代码进行检测评估。完整的PHP代码检测评估虽然可能很耗时,但它可以为你提供有关应用程序性能的深入信息。幸运的是,有几个开源程序可以用于分析你的PHP代码,如Xdebug。
监控PHP性能的重要性
如果你没有做好准备,你的Web应用可能前一分钟还在正常运行,但是下一分钟,一波突然激增的流量就会导致你的应用程序崩溃。 当然,优化和重构总是需要时间、精力和资金,而且投入是否值得的也很难说。因此,做出明智决策的最佳方式是不断收集数据。
PHP性能监控软件可以帮助你立即测量所做的任何更改的影响。当然,知道要监测什么同样重要。速度和内存使用被认为是性能的最佳指标,因为它们影响到页面加载时间,这对Web应用程序至关重要。
虽然数据收集很重要,但是当你不需要监控系统时,你应该关闭监控系统,因为大量日志同样也会对性能造成影响。当然,这样的日志可以提供有关如何提高性能的有用信息,因此你应该在高峰期间定期监控。
未来的PHP性能
PHP仍在不断进化中,在目前正在开发的PHP 8版本中,最新的功能是即时编译或JIT,它将可以为我们创建更快的Web应用。随着技术的不断进步,用户的期望也随之增加。因此,开发人员必须始终关注未来的变化。
在构建Web应用程序时,请记住,今年的工作可能在明年不起作用。你可能需要进行调整才能持续保持优秀的PHP性能。在开发过程中,应该持续重点关注如何构建适用于高并发场景的Web应用和网站,保证它们的高可用性。
要通过争取中央预算内资金、用好政府专项债券、盘活国有存量资源资产资金、对接政策性开发性金融和商业银行贷款,通过返乡创业、创新创业、产业链乃至产业生态招商等举措,统筹解决好各类投资的资金来源问题,以实际成效迎接党的二十大胜利召开。
最新财报显示,截至今年二季度,腾讯控股持有的上市公司股份的公允价值已从2021年末的9828针对股票回购的资金问题,腾讯高管在财报会中表示,“以二季度的业绩为例,减去为支持视频号、国际、游戏、企业软件等业务所进行的资本支出之后,我们仍然创造了一百几十亿美元的年化自由现金流。
李殿勋强调,要坚持需求牵引和问题导向,以走一步、看两步、想三步的前瞻思维,科学、精准、超前储备投资项目,创造性搞好用钱、用地和建设环境保障。要通过争取中央预算内资金、用好政府专项债券、盘活国有存量资源资产资金、对接政策性开发性金融和商业银行贷款,通过返乡创业、创新创业、产业链乃至产业生态招商等举措,统筹解决好各类投资的资金来源问题,以实际成效迎接党的二十大胜利召开。
作者|TheBigPicture数据支持|勾股大数据(wwwgogudatacom)Bumble现有的三款App“爱情是两个不同的身体里住着同一个灵魂”——亚里士多德09-17年相识和约会方式变化来源:MichaelJ
top通过监督学习训练压缩模型,选择性地减少图像中的颜色数,在不影响原有分辨率的情况下,对图像文件大小进行充分优化,自动平衡文件体积和图像质量,肉眼几乎看不出与原图的差异。top,有图片的含义,IMG是图片的英文缩写,除此以外img格式还是图像文件的一种格式,它具有很高的压缩效率,因此无论是从含义上还是内涵上,img
live杜绝了盗版的可能,最大限度的保护了创作者的权益,这也帮助其成为区块链上最大的直播平台。IdentityDigital拥有近300个域名组合,例如:IdentityDigital拥有近300个域名组合,例如:
在做好网站的TDK后,最主要的就是对关键词进行布局,如核心词、次要词、长尾词等,需要分配在首页、列表也、内容页等不同页面。这样的做法不仅是为了使页面能够得到展现,还需要降低每个关键词优化的难度。这样的做法不仅是为了使页面能够得到展现,还需要降低每个关键词优化的难度。
新京报贝壳财经讯(记者 许诺)11月2日,在中国移动全球合作伙伴大会产品创新融合发布会上,中国移动咪咕公司总经理刘昕在演讲中发布了元宇宙MIGU演进路线图,并表示,咪咕将继续聚焦超高清视频、视频彩铃、云游戏、云VR、云AR五大方向,投入更多
统信 UOS 家庭版 21.3.1 版本新增升级动态,用户可在等待系统更新的时间里感受中华诗词之美。▲ 图自统信软件,下同同时,平行世界新增支持哔哩哔哩。IT之家 7 月 28 日消息,今日,统信 UOS 家庭版 21.3.1 新版正式发布。
图片来源@视觉中国文 | 巨潮WAVE,作者|老鱼儿,编辑 | 王方玉无人机近期受到了越来越多的关注。和很多产品不同的是,并非是因为什么新款发布或者配置升级,而是因为在乌克兰上空成批飞翔,用作监控和拍摄使用,成了正经上了战场的“军工产品”。