0

0

如何轻松集成NewRelicPHPAgent?intouch/newrelic助你优化应用性能监控

PHPz

PHPz

发布时间:2025-07-22 11:02:03

|

668人浏览过

|

来源于php中文网

原创

可以通过一下地址学习composer学习地址

告别性能监控的“裸奔”时代:如何优雅地集成New Relic?

作为一名php开发者,我们都深知应用性能的重要性。当用户抱怨页面加载慢,或者服务器负载异常时,我们往往需要借助专业的工具来定位问题。new relic无疑是其中的佼佼者,它能提供详细的事务追踪、数据库查询分析、错误报告等,帮助我们洞察应用的每一个角落。

然而,在使用New Relic PHP Agent的过程中,我曾遇到一个令人头疼的问题。New Relic Agent提供了一系列全局函数(如newrelic_set_appname()newrelic_add_custom_parameter()等)供我们直接调用。这在生产环境一切正常,但当我在本地开发环境或持续集成(CI)环境中进行测试时,由于New Relic Agent通常未安装,这些全局函数的调用就会导致致命错误,直接中断程序的执行。这迫使我不得不为这些调用添加大量的function_exists()判断,代码变得冗余且难以维护。更糟糕的是,这种直接调用方式也与现代PHP开发推崇的命名空间和依赖注入理念格格不入。

难道就没有一种更“PHP范儿”的方式来集成New Relic吗?

Composer与intouch/newrelic:优雅的解决方案浮出水面

答案是肯定的!得益于Composer的强大生态系统,我找到了一个完美的解决方案——intouch/newrelic。这个库并非什么黑魔法,它仅仅是对New Relic PHP Agent API的一个命名空间封装。它的核心思想是提供一个类,通过这个类来调用New Relic的各项功能,从而避免了直接调用全局函数可能带来的问题。

安装它非常简单,只需通过Composer命令即可:

立即学习PHP免费学习笔记(深入)”;

composer require intouch/newrelic

安装完成后,你就可以在你的代码中以面向对象的方式使用New Relic的功能了:

use Intouch\Newrelic\Newrelic;

// 创建Newrelic实例
$newrelic = new Newrelic();

// 现在你可以通过 $newrelic 对象来调用New Relic的API了
// 例如,设置应用名称
$newrelic->setAppName('MyAwesomePHPApp');

// 记录一个自定义参数
$newrelic->addCustomParameter('user_id', 123);

// 标记一个事务为后台任务
$newrelic->backgroundJob(true);

// 也可以使用其他New Relic提供的API,例如:
// $newrelic->nameTransaction('UserController/index');
// $newrelic->noticeError(new Exception('Something went wrong!'));

为什么intouch/newrelic如此优雅?

这个库的妙处在于其设计理念:

DALL·E 2
DALL·E 2

OpenAI基于GPT-3模型开发的AI绘图生成工具,可以根据自然语言的描述创建逼真的图像和艺术。

下载
  1. 命名空间封装: 将New Relic的API封装在一个命名空间下的类中,避免了全局函数污染,让你的代码更加整洁,符合现代PHP的开发规范。

  2. 优雅的降级处理: 这是我最看重的功能。当你创建Newrelic类的实例时,它会自动检测New Relic PHP Agent是否已安装。

    • 如果Agent已安装,那么所有通过$newrelic对象调用的方法都会正常地传递给底层的New Relic Agent API。
    • 如果Agent未安装intouch/newrelic的各个方法会“静默”地返回false,而不会抛出任何错误!这意味着你的应用在没有New Relic Agent的环境中也能正常运行,而无需额外的function_exists()判断。
  3. 可选的严格模式: 如果你希望在New Relic Agent未安装时得到明确的通知(例如,在生产环境强制要求Agent存在),你可以在构造函数中传入true

    use Intouch\Newrelic\Newrelic;
    
    // 如果New Relic Agent未安装,将抛出 RuntimeException
    $newrelic = new Newrelic(true);

    这为你提供了在不同环境下灵活控制行为的能力。

  4. Composer依赖管理: 作为Composer包,它能轻松地被添加到你的项目中,并与其他依赖项一起管理,简化了部署流程。

实际应用效果与总结

通过引入intouch/newrelic,我的开发流程得到了显著优化。在本地开发时,我不再需要担心New Relic函数导致程序崩溃;在CI/CD流水线中,测试可以顺利进行,而无需为New Relic Agent的缺失而烦恼。当代码部署到生产环境时,只要New Relic Agent就位,性能监控就会自动生效,无缝衔接。

总而言之,intouch/newrelic是一个小而美的库,它解决了在PHP项目中集成New Relic PHP Agent的常见痛点,让性能监控的集成变得更加优雅、健壮和可维护。如果你正在使用New Relic,或者计划将其引入你的PHP项目,那么intouch/newrelic绝对值得你尝试。它会让你告别那些繁琐的function_exists()判断,专注于业务逻辑的实现,同时享受New Relic带来的强大性能洞察力。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

153

2023.12.25

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

358

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2082

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

349

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

256

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.10.09

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号