4

リソースをシリアル化するにはどうすればよいですか?

イラスト:

<?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"

?>

ご覧のとおり、ドキュメントに記載されているようにシリアル化/非シリアル化すると、fopenによって返されるリソースが失われます。

serialize()は、リソースタイプを除くすべてのタイプを処理します

リソースをシリアル化してセッションに保存し、すべてのページで利用できるようにしたいと考えています。別の方法があるかもしれませんか?

4

1 に答える 1

5

リソースはシリアル化されることを意図しておらず、セッション変数を介してページのロード間で永続化することはできません。これらは基本的に、いくつかのシステムリソースの単なるハンドルです。PHPは、スクリプトの実行が終了すると、これらのリソースハンドルの割り当てを自動的に解除します。

そうは言っても、作業中のファイルパスをセッションに配置して、後続のページの読み込み時に新しいハンドルを取得することができます。

于 2013-03-25T16:36:14.110 に答える