在方法

时间:2015-10-02 11:16:57

标签: php web-services class oop

我有一个名为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索引的数组。





更新: 当我在课外的另一个文件中检查此请求时,这是请求 - 响应时间轴:

enter image description here

1 个答案:

答案 0 :(得分:0)

当你说'#34;但是当我在另一个文件中检查完全相同的请求时,在课堂上就可以了。",需要多长时间?

您应该尝试增加php.ini文件中的max_execution_time,或者在PHP脚本中设置:ini_set('max_exeution_time', 60 /*seconds*/)