私は状態が潜在的に多くのオブジェクトを含んでいるステートフルなWebアプリケーションをPHPで書いています。この時点で、これらのオブジェクトはすべて$ _SESSIONに保持され、要求の最後に直列化されます。セッション全体をシリアライズするには数秒かかり、セッションをシリアライズするにはさらに時間がかかるため、これは少し痛みです。PHPでリクエスト間にオブジェクトを直列化せずに保存する
APCを試したかったのですが、オブジェクトがシリアル化されずに単にmemcopiedされることを期待していたからです。ああ、それは私がapc_store($object)
オブジェクトをフィードすると、それは別のプロセスに渡す前にそれをとにかくシリアル化しているようだ。 (私のセッションオブジェクトには多くの(循環)参照があるため、初期値と配列はシリアル化なしでmemcopiedされていますが、それは私にとっては適切な解決策ではありません)
私の質問:毎回のリクエストの後にオブジェクトを直列化せずにPHPでオブジェクトを永続的に保つ方法?私はHipHop通訳がこれを手伝ってくれるという噂を聞いたことがありますが、ネット上で実際の例は見つかりませんでした。誰かが私にPHPで可能かどうか教えてもらえますか?
(私が知っている、私はJavaやTCP接続がなくても、永続インスタンスをサポートする別の言語でこのプロジェクトを書くべきである)
$ _SESSIONのシリアル化に数秒かかる場合は、$ _SESSIONにあまりにも多くのデータが格納されています。適切なデータストア(データベースなど)を使用し、必要な「セッション」の部分だけを格納/取得します。 –
PHP用のグローバルなネイティブインメモリストレージはありません。必要な場合は、実際に別の言語(Javaなど)が必要です。または、提案どおりにセッションをクリーンアップしてください。おそらく、 '__sleep'メソッドで循環参照(PHPに問題がある場合)を削除し、代わりに' __wakeup'でそれらを復元する方法を保存することで、多くの時間を節約できます。 – Wrikken
@Wrikkenどうしてmemcache? – AlienWebguy