1

ZVALは通常、emallocを使用して作成されるため、ページ要求の最後に破棄されます。既存のZVALを取得してSAPI(pemallocと同等)に保持する方法はありますか?pemallocでZVALを作成するのはどうですか?

理想的には(PHPコードで)私がやりたいことはこれです:

class Object
{
    public $foo;
}

if(!($object = persist("object")))
{
   $object = persist("object", new Object());
}

$object->foo[] = "bar";

print count($object->foo);

リクエストごとcountに+1が返されます(毎回同じPHP「ワーカー」が使用されていると仮定します-私はPHP-FPMを使用しています)。

4

2 に答える 2

1

あなたは基本的にhttp://lxr.php.net/opengrok/xref/PHP_5_3/ext/sysvshm/sysvshm.c#242を説明しています

すでに shm にある機能を複製せずに取得できる最も近いものは、https://github.com/flavius/php-persistです。問題点: プリフォーク/マルチプロセス SAPI (Apache など) では、同じクライアントからの異なるリクエストが異なるプロセスで終了する可能性があるため、異なるデータが表示されます (Linux + Firefox で毎​​回ハード リフレッシュしてみてください)。ブラウザで)。

: これは進行中の作業であり、現在は整数のみを保持しています。配列の追加は簡単です。パッチ歓迎。まだデシリアライゼーション部分が必要で、実際にpersist()の最初のパラメーターを使用します。

于 2012-04-04T03:02:55.333 に答える
0

zend_object は永続化できないため、これを行うことはできません。APC などの拡張機能は、オブジェクトをメモリにシリアル化します。

于 2015-09-05T07:49:17.177 に答える