我有一个yii应用程序(APP1),以及一个单独的yii应用程序(APP2),我想从 APP1 <下载多行/表/ strong>至 APP2 ,完成一些操作,然后将其发送回 APP1 (同时完成任务 APP2 可能处于脱机状态。)
目前我有一个请求(使用GET
),可以从 APP1 中为json
对象提供我需要的所有数据。
我不太确定如何从这里开始?有没有人对如何处理这个有任何想法?
public function actionDownload($id) {
// Check if id was submitted via GET
if(!isset($_GET['id']))
$this->_sendResponse(500, 'Error: Parameter <b>id</b> is missing' );
$model = AuditLines::model()->findAll(array("condition"=>'line_audit_id='.$_GET['id']));
if(is_null($model))
$this->_sendResponse(404, 'No Items found with id '.$_GET['id']);
else
$this->_sendResponse(200, CJSON::encode($model));
}
这让我得到了我需要的所有数据,现在我需要将这些数据放入APP2数据库中的临时表中,然后我可以修改完成后发送回来
**更新** 这里的另一个问题是APP1将在实时服务器上,APP2将在WAMP服务器上托管。 APP2需要从APP1获取数据(表/行),然后在工作完成时离线。一旦作业完成(并且APP2具有互联网连接),它将需要将数据传递回APP1以进行处理 谢谢你的帮助
答案 0 :(得分:0)
您可以通过创建网络服务来实现这一点我正在向您展示如何使用soap进行操作。
在 App1
class WebServicesForUserController extends Controller
{
public function actions()
{
return array(
// 'services' will be used in app2 while making soap object
'services'=>array(
'class'=> 'CWebServiceAction',
)
);
}
/**
*@return mixed
*@soap
*/
public function sendData()
{
// do all your processing here and store data in a variable
$variable=array('my data');
// then just return the data in the json form
return json_encode($variable);
}
}
在 APP2 中,您可以调用此网络服务来获取
等数据class GetMyServiceController extends CController
{
public function actionMyData()
{
// create a soap object
$wsdl='http://path/to/your/app1/function/services';
$client=new SoapClient($wsdl);
$result=$client->sendData();
echo $result
}
}
有关详细信息,请点击 here
答案 1 :(得分:0)
您可以在1个应用程序中打开与不同数据库的多个数据库连接
'components' => array(
'db' => array(
'connectionString' => 'mysql:host=dbserver1;dbname=my1db',
...
),
'dbadvert' => array(
'connectionString' => 'mysql:host=adserver2;dbname=advertisingDB',
'username' => 'advertuser',
'password' => '***********',
...
'class' => 'CDbConnection' // DO NOT FORGET THIS!
),
来源:http://www.yiiframework.com/wiki/123/multiple-database-support-in-yii/#hh0
此外,如果两个应用程序都托管在同一服务器上,则app1可以从受保护路径中的另一个物理位置加载控制器/模型/帮助程序。