フレームワーク外の Yii モデルにアクセスするにはどうすればよいですか?
ギアマン ワーカーがタスクを実行しており、BrianMoons GearmanManager を使用して管理されています。Yii フレームワーク全体をロードすることなく、ワーカーのスクリプトでいくつかの Yii モデルにアクセスできるようにしたいと考えています。スクリプトでモデルをロードするには、何をインポートする必要がありますか? (CActiverecord、DBconnection など)。
ワーカーは次のようになります。
単純な関数として
function reverse_string($job, &$log) {
$workload = $job->workload();
$result = strrev($workload);
$log[] = "Success";
return $result;
}
?>
またはクラスとして:
<?php
class Sum {
private $cache = array();
private $foo = 0;
public function run($job, &$log) {
$workload = $job->workload();
if(empty($this->cache[$workload])){
$dat = json_decode($workload, true);
$sum = 0;
foreach($dat as $d){
$sum+=$d;
sleep(1);
}
$this->cache[$workload] = $sum + 0;
} else {
$sum = $this->cache[$workload] + 0;
}
$log[] = "Answer: ".$sum;
$this->foo = 1;
return $sum;
}
}
?>
次のように、いくつかのモデルにアクセスして、ワーカー内で操作を実行できるようにしたいと考えています。
$foo=Foo::model()->findByPk($id);
$foo->attribute="bar";
$foo->save();