PHP资源ID是唯一的吗?

时间:2010-07-29 09:21:46

标签: php

每个PHP实例的PHP资源ID是唯一的吗?将各种资源转换为字符串会返回“资源ID #X”(其中X是一些十进制数)?是否有一个返回资源ID的函数(我知道get_resource_type()来获取资源类型,但没有找到像get_resouce_id()这样的东西),还是必须这样做?

function get_resource_id($resource)
{
    return is_resource($resouce) 
           ? substr((string) $resource, 13 /* strlen("Resource id #") */)
           : NULL;
}

2 个答案:

答案 0 :(得分:6)

接缝很简单

intval($resource)

答案 1 :(得分:4)

Jakub,是的,PHP总是会为您当前使用的每个资源提供唯一的ID。资源未设置()或免费时,例如mysql_free_result。然后该ID再次可用,PHP可以再次重用这些资源。

如果您正在“缓存”或在会话中保留资源ID并重新使用它们,请小心谨慎,因为PHP可能会释放资源,然后使用该ID重新创建新资源,而您的旧资源ID可能指向新的。 / p>

所以你拥有它,资源是独一无二的,但不是永远的!

希望这有助于为您揭开PHP中的资源类型的神秘面纱。