无法执行Yii Web服务演示

时间:2011-02-04 12:45:45

标签: php web-services yii

我是Yii的新手,我目前正在尝试使用此框架来创建一些PHP Web服务。在尝试执行Yii网站http://www.yiiframework.com/doc/guide/1.1/en/topics.webservice#declaring-web-service-action上提供的关于Web服务的简要教程时,我遇到了一些麻烦。也就是说,在执行脚本时,我得到“超过60秒的最大执行时间”致命错误。我的猜测是getPrice()方法实际上永远不会被调用。 我很感激有关为什么会发生这种情况的任何建议。我的index.php文件的内容如下所示。 (请注意,Yii gramework已正确安装,我正在运行带有php_soap扩展名的PHP 5.3.0。)

<?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 :(得分:0)

你在index.php条目脚本中声明调用似乎很奇怪......我也不确定你为什么要重写构造函数?

我认为,如果这真的在您的输入脚本中,您缺少调用创建应用程序Yii::createWebApplication($config)->run();Yii::createConsoleApplication($config)->run();,具体取决于您是将其作为Web或控制台应用程序运行

您是否确保应用程序在没有SOAP /服务的情况下按预期运行?我会设置一个基本的Hello World应用程序(Web或控制台),然后尝试使用Web服务。