Проблема с запуском демоверсии веб-сервиса Yii - PullRequest
0 голосов
/ 04 февраля 2011

Я довольно новичок в Yii и сейчас пытаюсь использовать этот фреймворк для создания некоторых веб-сервисов PHP. При попытке выполнить краткое руководство по веб-сервисам, представленным на веб-сайте Yii http://www.yiiframework.com/doc/guide/1.1/en/topics.webservice#declaring-web-service-action, я столкнулся с некоторыми проблемами. А именно, я получаю фатальную ошибку «Максимальное время выполнения 60 секунд превышено» при выполнении скрипта. Я предполагаю, что метод getPrice () фактически никогда не вызывается. Буду признателен за любые предложения, связанные с тем, почему это может происходить. Содержимое моего файла index.php указано ниже. (Обратите внимание, что грамматика Yii установлена ​​правильно, и я использую PHP 5.3.0 с расширением php_soap).

<?php

$yii=dirname(__FILE__).'/../yii/framework/yii.php';
defined('YII_DEBUG') or define('YII_DEBUG',true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($yii);

class StockController extends CController{

function __construct(){
    parent::__construct($this->id, $this->module);
}

public function actions(){
    return array(
        'quote'=>array(
            'class'=>'CWebServiceAction',
        ),
    );
}

/**
 * @param string the symbol of the stock
 * @return float the stock price
 * @soap
*/
public function getPrice($symbol){
    $prices=array('IBM'=>100, 'GOOGLE'=>350);
    return isset($prices[$symbol])?$prices[$symbol]:0;
    //...return stock price for $symbol
}
}

$client=new SoapClient('http://localhost/SampleWebService/?r=stock/quote');
echo $client->getPrice('GOOGLE');
?>

1 Ответ

0 голосов
/ 04 февраля 2011

Кажется странным, что вы объявляете вызов в сценарии ввода index.php ... Я также не уверен, почему вы переопределяете конструктор?

И я думаю, что если это действительно в вашем сценарии ввода, вы пропустите вызов, создайте приложение, либо Yii::createWebApplication($config)->run();, либо Yii::createConsoleApplication($config)->run();, в зависимости от того, используете ли вы это как веб-приложение или консольное приложение.

Вы убедились, что приложение работает должным образом без SOAP / сервисов?Я бы настроил базовое приложение Hello World (веб или консоль), а затем попробовал бы веб-сервисы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...