在PHP中生成UUID的最有效方法是什么?

时间:2014-12-01 22:10:23

标签: php apache uuid

重复调用以下函数是否存在显着的开销(CPU,内存和/或IO):

public function getUuid()
{
    return `uuidgen -r`; # -r = version 4
}

使用all PHP implementation of generating a UUID(v4)?如果重要,则项目正在使用Apache (Prefork MPM) 2.2.22PHP 5.3.10(使用APC)。

我最初的感觉是,在C库中而不是在PHP中生成UUID的好处不仅仅是弥补系统调用开销。另外,uuidgen作为util-linux包的一部分,我本来相信它比PHP库更能正确生​​成UUID,但我渴望得到一些额外的输入。

1 个答案:

答案 0 :(得分:1)

我建议您分析问题所在。 shell_exec() PHP函数也会生成一个shell,所以它可能不像你想象的那么便宜。但是你提到的PHP类似乎也调用了子进程。我做了一些测试(在OS X上)并且可以在大约一分钟内使用PHP类生成10.000个UUID,而使用shell_exec('uuidgen')则生成40秒。

除了ifconfig之外,PHP类似乎也会调用shell_exec(),因此这可能是稍微增加开销的原因。

此外,结果可能会因您选择的哈希算法而异。