So rufen Sie eine Konsole-Befehl in web-application-Aktion in Yii?
Ich habe eine Konsole mit dem Befehl zu tun, Verbraucher Zeit, UND ich muss wissen, wie aufrufen (ausführen) in eine web-Anwendung handeln, die in YII.
class MyCommand extends CConsoleCommand{
public function actionIndex(){
$model = new Product();
$model->title = 'my product';
...
$model->save();
.
.
.
}
}
Ich möchte diesen code ausführen.
- Warum wollen Sie, dass dies ein Befehl und keine controller?
- es ist ein Beispiel-code. Ich habe nur erwähnt, dass ich brauche einen Befehl ausführen einer Aktion in einer web-Aktion.
- Aber der Sinn eines Befehls ist es zum ausführen von offline-Aufgaben, so ju können es verwenden, mit einem cron-job.
- In der Tat, ich brauche, um einige 16-bit (Anzahl zufällig, und legen Sie Thema in eine Tabelle, weil es zu lange dauert bekomme ich maximal limit time execution error. und ich muss tun, dass einige Wege anders.
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie dies:
Den 2-Parameter mit dem Wert "test" gesetzt werden muss, aber keine Auswirkung, Sie dienen der --help-option bei der Verwendung der Konsole.
https://github.com/yiisoft/yii/blob/master/framework/console/CConsoleCommand.php#L65
run
Methode? Was benutze ich als ersten parameter.Versuchen, diese
wo array('start', '--daemonize', '--initd") ist ein action-und action-Parameter
Hatte ich dasselbe problem - ich brauche Aufruf-Aktion von innen, controller und ab-Befehl
Sagte ich dasselbe problem, weil es eigentlich dasselbe - Sie haben Maßnahmen, die Sie aufrufen müssen, die von der Konsole, und rufen Sie es von controller zu.
If you need to call an action(command) as a part of controller action, then i think you need to modify this solution a little
. Oder ist meine Lösung, ist genug für Sie?So, hier ist meine Lösung:
ersten create-Aktion, wie gesagt, in http://www.yiichina.net/doc/guide/1.1/en/basics.controller#action
dann in der controller-action geladen wie üblich haben:
und in Befehl, den ich ausführen von Aktionen in einer solchen Art und Weise:
Akzeptieren, dass wir auf linux-server, die für Yii 1.1 Beispiel aus der Praxis wäre:
Dieser wird ausgeführt, Yii console-Befehl in den hintergrund.
Yii-PHP -> Sie können die standard-php-Konstrukte angegeben http://php.net/manual/en/function.exec.php und die damit verbundenen Methoden in der Nähe des unteren Rand der Seite, je nachdem, was genau Sie erreichen wollen.
Außerdem gibt es noch einen sehr sauberen Lösung aus
cebe
auf gist:In der Regel, was Sie sollten in diesen Situationen ist, umgestalten.
Bewegen Sie den "common" - code aus der MyCommand und legen Sie Sie in eine Klasse befindet sich in der
components
Ordner.Jetzt können Sie alle Kopf an der Spitze des "gemeinsamen" code ohne änderung der Funktionalität. Zum Beispiel:
protected/components/Mywork.php:
protected/controller/MyworkController.php:
protected/commands/MyworkCommand.php:
Dieser Ansatz macht das testen einfacher zu, wie Sie testen können Mywork als eine Einheit außerhalb der Ansicht.