add php_log_file_performance-Chinese.md

pull/37/head
yuqing 2018-07-20 11:10:58 +08:00
parent 4f7900ab2b
commit 63713195ea
4 changed files with 36 additions and 2 deletions

View File

@ -1,6 +1,7 @@
# 64位ID⽣成器说明 # 64位ID⽣成器说明
```
我们在libfastcommon中实现了64位 8字节整数 ID⽣成器针对PHP这样的多进程⽅式⽣成的64位ID也可以做到全局唯⼀。 我们在libfastcommon中实现了64位 8字节整数 ID⽣成器针对PHP这样的多进程⽅式⽣成的64位ID也可以做到全局唯⼀。
提供的PHP扩展php-fastcommon封装了64位ID⽣成器。 提供的PHP扩展php-fastcommon封装了64位ID⽣成器。
@ -8,7 +9,7 @@
64位ID⽣成规则⽣成的ID可以⼩于64位 64位ID⽣成规则⽣成的ID可以⼩于64位
32 位Unix时间戳 + X位机器ID + Y位extra data + Z位顺序号 32 位Unix时间戳 + X位机器ID + Y位extra data + Z位顺序号
其中 X + Y + Z <= 32 其中 X + Y + Z <= 32
```
* 机器ID machine_id缩写为mid可以在初始化时指定如果设置为0表⽰获取本地IP地址的后X位作为机器ID * 机器ID machine_id缩写为mid可以在初始化时指定如果设置为0表⽰获取本地IP地址的后X位作为机器ID
* extra data⽤来存储额外信息例如订单分库的库号。如果不需要这个特性将Y设置为0即可 * extra data⽤来存储额外信息例如订单分库的库号。如果不需要这个特性将Y设置为0即可
* 顺序号sn会保存在本地⽂件中建议顺序号的位数Z⾄少为14其对应的最⼤数值为1638316K * 顺序号sn会保存在本地⽂件中建议顺序号的位数Z⾄少为14其对应的最⼤数值为1638316K
@ -18,7 +19,7 @@
``` ```
resource fastcommon_id_generator_init([string $filename = "/tmp/fastcommon_id_generator.sn", resource fastcommon_id_generator_init([string $filename = "/tmp/fastcommon_id_generator.sn",
int $machine_id = 0, int $mid_bits = 16, int $extra_bits = 0, int $sn_bits = 16]) int $machine_id = 0, int $mid_bits = 16, int $extra_bits = 0, int $sn_bits = 16])
return resource handle for success, false for fail return resource handle for success, false for fail
* 这个函数只需要在初始化的时候调⽤⼀次即可,建议不同的实例采⽤不同的⽂件来保存序列号。 * 这个函数只需要在初始化的时候调⽤⼀次即可,建议不同的实例采⽤不同的⽂件来保存序列号。
* php程序运⾏⽤户对这个⽂件必须有读写权限⽂件不存在会⾃动创建。 * php程序运⾏⽤户对这个⽂件必须有读写权限⽂件不存在会⾃动创建。

Binary file not shown.

View File

@ -0,0 +1,33 @@
# ⽇志⽂件优化PHP扩展函数
```
出于提升性能目的基于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
```