<?php
class MyFirstPersistentSoapServer {
private $resource; // (例如 PDO、mysqli 等)
public $myvar1;
public $myvar2;
public function __construct() {
$this->__wakeup(); // 我们正在调用我们的唤醒来处理启动我们的资源
}
public function __wakeup() {
$this->resource = CodeToStartOurResourceUp();
}
public function __sleep() {
// 我们确保在此处省略 $resource,因此我们的会话数据保持持久性
// 失败会导致在下一个请求期间数据反序列化失败;因此,我们的 SoapObject 不会在请求之间持久化。
return array('myvar1','myvar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence 必须在 setClass 之后调用,因为 setClass 的
// 行为在执行该方法时会设置 SESSION_PERSISTENCE_REQUEST。
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP ERROR: ". $e->getMessage());
}
?>