Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用面向对象的方法在PHP中使用Memcache_Php_Oop_Memcached - Fatal编程技术网

用面向对象的方法在PHP中使用Memcache

用面向对象的方法在PHP中使用Memcache,php,oop,memcached,Php,Oop,Memcached,我有一个非常重的类定义,它依赖于MySQL(也就是说,有时会很慢) 我已经成功地在PHP中安装并开始使用Memcache库。这允许我存储整个对象,而无需重新查询它们 然而,我已经扩展了我的类来自动更新数据库中的任何更改。我使用\uu get和\uu set跟踪更改,然后在\uu destruct 我不知道如何测试Memcache删除对象时是否调用了\uu destruct 有人知道一个事实/对如何测试它有什么建议吗?没有,memcache不会破坏该对象。您的对象不断地\u sleep()'ing

我有一个非常重的类定义,它依赖于MySQL(也就是说,有时会很慢)

我已经成功地在PHP中安装并开始使用Memcache库。这允许我存储整个对象,而无需重新查询它们

然而,我已经扩展了我的类来自动更新数据库中的任何更改。我使用
\uu get
\uu set
跟踪更改,然后在
\uu destruct

我不知道如何测试Memcache删除对象时是否调用了
\uu destruct


有人知道一个事实/对如何测试它有什么建议吗?

没有,memcache不会破坏该对象。您的对象不断地
\u sleep()
'ing和
\u wakeup()
'ing。但由于PHP不是销毁或丢失对象的对象,因此从未调用析构函数。您的缓存库可能会在对象过期后从memcache中删除该对象,并销毁该对象,从而调用
\uu destruct()
。。但这将取决于实施情况

我怀疑Memcached在丢弃缓存数据时会执行任何操作。Memcached不是一个特定于PHP的东西,它只存储数据。。。因为它将被Memcache而不是PHPMemcache删除,所以它与析构函数方法无关。Memcache调用序列化?@Mikhail大多数缓存引擎只是key=>值存储。它无法存储对象。。只是简单的数据类型,比如int和string。因此,通过
serialize()
unserialize()
将对象转换为字符串。当这种情况发生时,PHP调用神奇的方法
\uuuu sleep()
\uuu wakeup()
,以防在执行这些操作时发生任何特殊情况。查看memcache的状态页面以查看当前内存中的内容,您将看到对象的字符串表示。哦,天哪,我以为它保留了一个实际的内存块。我可以在唤醒时节省时间,但也许不能在睡眠时节省时间