代码之家  ›  专栏  ›  技术社区  ›  Jakub Kulhan

PHP资源ID是否唯一?

php
  •  4
  • Jakub Kulhan  · 技术社区  · 15 年前

    每个php实例的php资源ID是否唯一?将各种资源强制转换为字符串是否返回“resource id x”(其中 X 是小数吗?是否有返回资源ID的函数(我知道 get_resource_type() 获取资源类型m,但没有找到类似的 get_resouce_id() 或者必须这样做?

    function get_resource_id($resource)
    {
        return is_resource($resouce) 
               ? substr((string) $resource, 13 /* strlen("Resource id #") */)
               : NULL;
    }
    
    2 回复  |  直到 13 年前
        1
  •  4
  •   Paul Dragoonis    15 年前

    Jakub,是的,PHP总是为当前使用的每个资源提供一个唯一的ID。当资源为unset()或free'd时,例如 mysql_free_result . 然后该ID再次可用,PHP可以再次重用这些资源。

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

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

    希望这能帮助您解开PHP中资源类型的神秘面纱。

        2
  •  6
  •   John Conde    13 年前

    简单的接缝

    intval($resource)
    
    推荐文章