序列化文件资源

Mic*_*ael 4 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"

?>
Run Code Online (Sandbox Code Playgroud)

如您所见,如果按照文档所述进行序列化/反序列化,则 fopen 返回的资源将丢失:

serialize() 处理所有类型,除了资源类型

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

Mik*_*ant 5

资源不打算序列化,不能通过会话变量跨页面加载保持。它们基本上只是处理一些系统资源。PHP 将在脚本执行结束时自动取消分配这些资源句柄。

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