PHP - 根据参数生成唯一ID

时间:2013-05-27 15:01:32

标签: php

我刚才写了这个小函数,根据传递的参数创建一个唯一的id。我的问题是,如果有更好的(绩效)方法来解决这个问题。

function id_make(/* POLYMORPHIC */)
{
    return md5(serialize(func_get_args()));
}

echo id_make(__FILE__, 'something', ['item' => 'some_content']);

3 个答案:

答案 0 :(得分:1)

对于给定的函数签名,没有太多要改进的地方 - 它是连续的3个链式函数调用,它们可以完全按照您的要求进行操作,因此无需优化或剥离。

鉴于3函数调用内部或多或少都归结为本机编译功能,我也不认为有可能提供相同级别的灵活性,而不会产生可能的冲突。

所以不,在这个功能中没有什么可以改进的。如果需要这种灵活的散列,外部代码可能会使用一些优化。

答案 1 :(得分:1)

crc32似乎比md5(http://www.php.net/manual/en/function.crc32.php

快一点

json_encode()也比serialize()快一点。

答案 2 :(得分:1)

我想在尝试将相当大的对象作为参数传递时会出现性能问题吗?

我不知道你的脚本的目的,但也许这可能会有所帮助。也许你应该通过参数循环,当它是一个对象时,你可以用它的哈希替换它。 请参阅:http://php.net/manual/en/function.spl-object-hash.php

但是因为我说我不知道​​目的,你应该注意到当对象被销毁时可以重用相同的哈希。