用面向对象的方法在PHP中使用Memcache
我有一个非常重的类定义,它依赖于MySQL(也就是说,有时会很慢) 我已经成功地在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
\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的状态页面以查看当前内存中的内容,您将看到对象的字符串表示。哦,天哪,我以为它保留了一个实际的内存块。我可以在唤醒时节省时间,但也许不能在睡眠时节省时间