免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2276 | 回复: 0
打印 上一主题 下一主题

日志文件优化相关的两个PHP扩展函数 [复制链接]

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-02-15 17:35 |只看该作者 |倒序浏览
     出于提升性能目的,基于libfastcommon封装的php扩展,提供了函数fastcommon_error_log来替代PHP原生的error_log,使用fastcommon_file_put_contents替换PHP原生的file_put_contents。

     原理很简单,就是日志文件打开后将其文件描述符(或文件句柄)持久化,避免每次调用error_log或file_put_contents时都执行open和close等文件操作。

     在短字符串的场景下,通过实测fastcommon_file_put_contents比file_put_contents性能提升2倍以上。fastcommon_error_log比error_log性能提升50%以上。

     两个扩展函数的用法和PHP原生函数一致。在可以优化的场景下,由fastcommon扩展接管处理,否则透传给PHP原生函数处理。函数简要说明如下:

bool fastcommon_error_log (string $message [, int $message_type = 0, string $destination, string $extra_headers] )
接管(优化处理)条件:$message_type为3,且指定了$destination(即日志文件名)
在接管的情况下,$extra_headers可以为下列常量之一:
FASTCOMMON_LOG_TIME_PRECISION_NONE:日志行首不输出日期时间字符串(默认值)
FASTCOMMON_LOG_TIME_PRECISION_SECOND:日志行首输出的时间精度到秒
FASTCOMMON_LOG_TIME_PRECISION_MSECOND:日志行首输出的时间精度到毫秒
FASTCOMMON_LOG_TIME_PRECISION_USECOND:日志行首输出的时间精度到微秒
注:如果$message最后没有换行符,会自动增加。这和error_log的行为不一致。


int fastcommon_file_put_contents (string $filename , mixed $data [, int $flags = 0, resource $context ])
接管(优化处理)条件,需满足如下3个条件:
      * $data为字符串
      * $flags 为FILE_APPEND或 (FILE_APPEND | LOCK_EX)
      * $context为null,即没有指定$context

欢迎大家下载使用。




您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP