データ オブジェクト (本質的には多次元配列) をバックエンド データベースに保持しようとするサーバー側の PHP コードがあります。このデータ オブジェクトは、元々、フレックス アプリケーションから送信された AMF アクションスクリプト オブジェクトとして入ってきます。後で使用するためにオブジェクト全体を永続化したいので、php シリアル化関数を使用し、データベース フィールドに入力できる単純な文字列にオブジェクトをエンコードしました。コードは次のようになります。
$serializedDataObject = base64_encode(serialize($objectInstance->myDataObject));
このオブジェクトを復活させて元に戻したいときは、逆を実行するだけです
$unserializedDatanObject = unserialize(base64_decode($serializedDataObject));
これまでのところ、これはうまく機能しているようです。しかし、私のphpスクリプトが失敗することがあります。シリアル化の段階で失敗していると思います。私の質問は、理論的に言えば、PHP のシリアライゼーションとエンコーディング プロセスが失敗する原因は何ですか? データ オブジェクト配列に特定の文字または種類のデータがあり、シリアライゼーションが失敗する可能性がありますか?
データ オブジェクトをシリアル化する前に、データ オブジェクトをマッサージする必要がありますか?
編集:
プロセスを明確にするために、このように機能します
AMF ベースの actionscript オブジェクトをサーバーに送信する Flex/Actionscript クライアント アプリがあります。PHP 側では、Zend AMF ライブラリを使用して AMF データを読み取ります。このオブジェクトは PHP で調べることができ、基本的に連想多次元配列のように見えます。この時点で、オブジェクトをシリアル化して Base 64 エンコードし、オブジェクトをエンコードされた文字列としてデータベースに保持できるようにします。
うまくいけば、これは理にかなっています。問題は断続的であり、一貫して再現するのは簡単ではありません。特定のエラー メッセージが表示された場合は、ここに投稿してさらに明確にします。しかし今のところ、さらにデバッグするのに役立つシリアライゼーションの限界は何かと思っていました。