我有一个名为webserviceCall
的课程。
这是我的班级结构:
Constructor
--->
启动webservice客户端和DB处理程序类以及一些属性:
public function __construct()
{
$this->username = $GLOBALS['WEBSRVC']['username'];
$this->password = $GLOBALS['WEBSRVC']['password'];
$this->api = $GLOBALS['WEBSRVC']['api'];
$this->loginClient = new SoapClient(NULL, array(
'location' => "http://domain.com/webservice/kks/server.php",
'uri' => "urn://test/webservice") );
$this->booksClient = new SoapClient(null, array(
'location' => "http://domain.com/webservice/kks/books.php",
'uri' => "urn://test/webservice"
));
$this->shopClient = new SoapClient(null, array(
'location' => "http://domain.com/webservice/kks/newShop.php",
'uri' => "urn://test/webservice/shop"
) );
$this->db = new dbHandler($GLOBALS['DBVAR']['dbn'], $GLOBALS['DBVAR']['usn'], $GLOBALS['DBVAR']['psw']);
$this->param = self::freshLogin( $this->username, $this->password, $this->api);
}//__Construct
根据网络服务需求,有一种检查登录的方法:
protected function freshLogin($username, $password, $api)
{
$currentInfo = $this->db->simple_search('webservice');
$token = ( ($currentInfo[0]['token'] != '') ? $currentInfo[0]['token'] : false );
if( $token == false )
{
$token = $this->loginClient->__soapCall('authenticate', array($currentInfo[0]['username'], $currentInfo[0]['password'], $currentInfo[0]['api']) );
//update token in table
$updateToken = $this->db->update_single('webservice', 'token', $token, true, 'api', $api);
return $token . '||' . $api;
}//token is empty - first login
else
{
$checkToken = $this->loginClient->__soapCall('checkToken', array($token, $api) );
if( isset($checkToken) && $checkToken > 0 )
{
return $token . '||' . $api;
}//if token is valid
else
{
$token = $this->loginClient->__soapCall('authenticate', array($currentInfo[0]['username'], $currentInfo[0]['password'], $currentInfo[0]['api']) );
//update token in table
$updateToken = $this->db->update_single('webservice', 'token', $token, true, 'api', $api);
return $token . '||' . $api;
}//authenticate again, save token and create param value
}//token exists
}//function freshLogin
最后,有一种交易网络服务的方法:
public function getBooks()
{
return $this->booksClient->__soapCall('getAllBooks', array($this->param) );
}//function getAllBooks
当我用getBooks()
方法检查getAllBooks
函数时,似乎浏览器正在等待响应,并且没有结果。这是错误:
第114行的C:\ xampp \ htdocs \ ketabTheme \ PHP \ classes \ webserviceCall.php超过了30秒的最长执行时间
但是当我在另一个文件中检查完全相同的请求时,在一个类中,它没关系。此外,当我在getBooks
方法中调用另一种web服务方法时,一切都很好。
请你帮我看看这里有什么问题?
注意:
getBooks
方法应该有一个结果为1935索引的数组。
更新:
当我在课外的另一个文件中检查此请求时,这是请求 - 响应时间轴:
答案 0 :(得分:0)
当你说'#34;但是当我在另一个文件中检查完全相同的请求时,在课堂上就可以了。",需要多长时间?
您应该尝试增加php.ini文件中的max_execution_time,或者在PHP脚本中设置:ini_set('max_exeution_time', 60 /*seconds*/)
?