【问题标题】:Serialize file resource序列化文件资源
【发布时间】:2013-03-25 16:33:22
【问题描述】:

如何序列化资源?

插图:

<?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() 处理所有类型,除了资源类型

我希望能够序列化资源以将其存储在会话中,以使其在每个页面中都可用。有没有别的办法?

【问题讨论】:

  • 我可以简单地说:你不能!资源大多在 PHP 之外被引用...例如:打开文件、流、数据库...
  • 为什么不直接序列化文件的内容?

标签: php serialization


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多