如何序列化PHP堆以存储到memcached中
我面临一个问题,我想将一个SplHeap(或任何其他类型的类似Spl heap的对象,如SplPriorityQueue、SplMinHeap、SplMaxHeap)存储到Memcached的一个位置,以便以后使用它们 我注意到,如果不进行序列化,将导致丢失存储在堆中的数据 对这件事有什么建议吗?或者如何序列化PHP堆如何序列化PHP堆以存储到memcached中,php,memcached,serializable,spl,Php,Memcached,Serializable,Spl,我面临一个问题,我想将一个SplHeap(或任何其他类型的类似Spl heap的对象,如SplPriorityQueue、SplMinHeap、SplMaxHeap)存储到Memcached的一个位置,以便以后使用它们 我注意到,如果不进行序列化,将导致丢失存储在堆中的数据 对这件事有什么建议吗?或者如何序列化PHP堆 谢谢SPL带有一个可序列化的接口。因此,您的SplHeap类应该像下面的代码一样实现这个接口 class MySplHeap extends SplMinHeap impleme
谢谢SPL带有一个可序列化的接口。因此,您的SplHeap类应该像下面的代码一样实现这个接口
class MySplHeap extends SplMinHeap implements Serializable {
public function compare(ArrayObject $a, ArrayObject $b) {
return ($b->member - $a->member);
}
public function serialize() {
$objects = new ArrayObject();
$heap = clone $this;
foreach ($heap as $node) {
$objects[] = $node;
}
return serialize($objects);
}
public function unserialize($serializedData) {
if (!is_object($serializedData) && gettype($serializedData) == 'object') {
$serializedData = serialize($serializedData);
}
$objects = unserialize($serializedData);
foreach ($objects as $node) {
$this->insert($node);
}
}
}
Serializable接口实现serialize()和unserialize()方法。因此,您可以在splheap类中声明特殊功能。SPL带有一个可序列化的接口。因此,您的SplHeap类应该像下面的代码一样实现这个接口
class MySplHeap extends SplMinHeap implements Serializable {
public function compare(ArrayObject $a, ArrayObject $b) {
return ($b->member - $a->member);
}
public function serialize() {
$objects = new ArrayObject();
$heap = clone $this;
foreach ($heap as $node) {
$objects[] = $node;
}
return serialize($objects);
}
public function unserialize($serializedData) {
if (!is_object($serializedData) && gettype($serializedData) == 'object') {
$serializedData = serialize($serializedData);
}
$objects = unserialize($serializedData);
foreach ($objects as $node) {
$this->insert($node);
}
}
}
Serializable接口实现serialize()和unserialize()方法。因此,您可以在splheap类中声明特殊功能