diff --git a/doc/id_generator-Chinese.md b/doc/id_generator-Chinese.md index 5a55f12..eb1bd72 100644 --- a/doc/id_generator-Chinese.md +++ b/doc/id_generator-Chinese.md @@ -1,6 +1,7 @@ # 64位ID⽣成器说明 +``` 我们在libfastcommon中实现了64位( 8字节整数) ID⽣成器,针对PHP这样的多进程⽅式,⽣成的64位ID也可以做到全局唯⼀。 提供的PHP扩展php-fastcommon,封装了64位ID⽣成器。 @@ -8,7 +9,7 @@ 64位ID⽣成规则(注:⽣成的ID可以⼩于64位) 32 位Unix时间戳 + X位机器ID + Y位extra data + Z位顺序号 其中 X + Y + Z <= 32 -``` + * 机器ID( machine_id,缩写为mid)可以在初始化时指定,如果设置为0表⽰获取本地IP地址的后X位作为机器ID * extra data⽤来存储额外信息,例如订单分库的库号。如果不需要这个特性,将Y设置为0即可 * 顺序号(sn)会保存在本地⽂件中,建议顺序号的位数Z⾄少为14,其对应的最⼤数值为16383(16K) @@ -18,7 +19,7 @@ ``` 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 * 这个函数只需要在初始化的时候调⽤⼀次即可,建议不同的实例采⽤不同的⽂件来保存序列号。 * php程序运⾏⽤户对这个⽂件必须有读写权限,⽂件不存在会⾃动创建。 diff --git a/doc/id_generator-Chinese.pdf b/doc/id_generator-Chinese.pdf deleted file mode 100644 index 27a4483..0000000 Binary files a/doc/id_generator-Chinese.pdf and /dev/null differ diff --git a/doc/php_log_file_performance-Chinese.md b/doc/php_log_file_performance-Chinese.md new file mode 100644 index 0000000..4f232b5 --- /dev/null +++ b/doc/php_log_file_performance-Chinese.md @@ -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 +``` diff --git a/doc/php_log_file_performance-Chinese.pdf b/doc/php_log_file_performance-Chinese.pdf deleted file mode 100644 index 7cd57e5..0000000 Binary files a/doc/php_log_file_performance-Chinese.pdf and /dev/null differ