1
類
我有一個類的運行過程本身的Zend XMLRPC服務執行/電話
僞類
class MyClass {
private $x;
private $y
// filename is INI file, each project have its own INI file
public function __construct($filename) {
// read and set value from INI file
// set some default values here as well
}
/**
* Start Process
*
* @param
* @return
*/
public function startProcess() {
// run process here
$y = $this->getX(); // and so on
echo "Process Started: ".$y."\n";
}
// This is the change for the XMLRPC
/*
public function startProcess($value) {
// run process here
echo "Process Started: ".$value."\n";
}
*/
/**
* Set X
*
* @param $x
* @return
*/
private function setX($x) {
$this->x = $x;
}
/**
* Get X
*
* @param
* @return $x
*/
private function getX() {
return $this->x;
}
// and so on
}
要執行類,我會做這樣的事情
include('MyClass.php');
$process = new MyClass('file.ini');
$process->setX('blah');
$process->startProcess();
現在我想通過XMLRPC調用來初始化它,我只是在方法調用中將它傳遞給變量。我正在關注這個tutorial,但我不確定我是否可以,這是我正在嘗試的。現在不是事先設定X,我只是去把它傳遞給startProcess功能
XML-RPC服務器:
ini_set("include_path", "/usr/share/php/libzend-framework-php");
require_once('Zend/XmlRpc/Server.php');
/**
* Start Process Wrapper
*
* @param
* @return
*/
function startProcessWrapper($value) {
include('MyClass.php'); // I have change the startProcess() to take a variable
$process = new MyClass('file.ini');
$process->startProcess('passing x here');
}
$server = new Zend_XmlRpc_Server();
$server->addFunction('startProcessWrapper', 'webservice');
echo $server->handle();
XML-RPC客戶端:
ini_set("include_path", "/usr/share/php/libzend-framework-php");
require_once('Zend/XmlRpc/Client.php');
$server = new Zend_XmlRpc_Client('http://localhost/xmlrpc_server.php');
$client = $server->getProxy();
$request = array(
array(
'methodName' => 'system.listMethods',
'params' => array()
),
array(
'methodName' => 'system.methodHelp',
'params' => array('webservice.startProcess')
),
array(
'methodName' => 'webservice.startProcess',
'params' => array('123456')
));
$response = $client->system->multicall($request);
echo print_r($response,true);
這是我得到的迴應:
Array
(
[0] => Array
(
[0] => system.listMethods
[1] => system.methodHelp
[2] => system.methodSignature
[3] => system.multicall
[4] => webservice.startProcess
)
[1] => Start Process Wrapper
[2] => Array
(
[faultCode] => 623
[faultString] => Calling parameters do not match signature
)
)
爲什麼不能正常工作?試圖找到一種讓XMLRPC啓動我的課程流程的方法,建議?