为什么 PHP/Apache 组合会执行如此多的gettimeofday系统调用?即使很快,每个电话都是应该考虑的电话。
只是一个快速strace -c -p [apache2 process id],给出以下内容:
Process 22294 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.52 0.010000 51 196 poll
1.48 0.000150 0 20752 gettimeofday
0.00 0.000000 0 94 7 read
0.00 0.000000 0 48 write
0.00 0.000000 0 96 32 open
0.00 0.000000 0 75 close
0.00 0.000000 0 6 chdir
0.00 0.000000 0 766 time
0.00 0.000000 0 2 chmod
0.00 0.000000 0 56 10 access
Run Code Online (Sandbox Code Playgroud)
那些 20K 的电话让我很担心。有人愿意对此有所了解吗?
Gettimeofday 主要由 Apache 调用来记录调试文件中的条目。还有一些模块使用 gettimeofday。所以没什么好担心的。
编辑:我做了一些 php 源代码挖掘并得出以下结果:大多数与时间相关的 php 函数将使用系统时间。由于它们使用系统时间,因此 gettimeofday 会被大量调用,因此如果您想减少调用,请减少与时间相关的函数。
我必须指出的是,其他函数也会进行 gettimeofday 调用。例如,如果您使用 php_session_start,这将(有时,取决于一些参数,例如新会话,...)调用 php_combined_lcg,如果没有设置种子值,则该调用将依次调用 lcg_seed得到一个伪随机数。lcg_seed 将进行 gettimeofday 调用。请记住这一点。
| 归档时间: |
|
| 查看次数: |
8843 次 |
| 最近记录: |