我是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');
?>
答案 0 :(得分:0)
你在index.php条目脚本中声明调用似乎很奇怪......我也不确定你为什么要重写构造函数?
我认为,如果这真的在您的输入脚本中,您缺少调用创建应用程序Yii::createWebApplication($config)->run();
或Yii::createConsoleApplication($config)->run();
,具体取决于您是将其作为Web或控制台应用程序运行
您是否确保应用程序在没有SOAP /服务的情况下按预期运行?我会设置一个基本的Hello World应用程序(Web或控制台),然后尝试使用Web服务。