序列化文件资源

时间:2013-03-25 16:33:23

标签: php serialization

如何序列化资源?

插图:

<?php
if ($_fileHandle = fopen('file.txt', 'a')) {
    echo "fopen success <br />";
} else {
    echo "fopen failed <br />";
}

var_dump($_fileHandle);//displays "resource(3, stream)"

$serializedResource = serialize($_fileHandle); 
$unserializedResource = unserialize($serializedResource);

var_dump($unserializedResource);//displays "int 0"

?>

正如您所看到的,如果按documentation所述序列化/反序列化,fopen返回的资源将丢失:

  

serialize()处理除资源类型

之外的所有类型

我希望能够序列化资源以将其存储在会话中,以使其在每个页面中都可用。可能还有另一种方式吗?

1 个答案:

答案 0 :(得分:4)

资源不是要序列化的,并且不能通过会话变量跨页面加载持久化。它们基本上只是某些系统资源的句柄。 PHP将在脚本执行结束时自动解除分配这些资源句柄。

话虽如此,您当然可以在会话中放置您正在使用的文件路径,并在后续页面加载时获取新的句柄。