Befehl aus Plugin ausführen

Hi *,

wie kann man aus SW ein Befehl (zB Aufruf eines Shellskriptes) ausführen?

PHP: exec(‚echo „wert“ > ~/test/uz.txt‘);       geht - aus einem PHP-Skript

Sobald ich das in mein CronPlugin schreibe passiert nichts. :frowning:

 

Muss man da was SW spezielles tun damit Befehle ausgeführt werden.

Danke und viele Grüße, Lars

Ich würde das ganze über die Symfony Consolen Komponente machen bzw. kannst du hier eben die Shopware CLIextenden. Der Befehl kann dann über den Cron angesteuert werden.

Also wenn ich das jetzt richtig verstanden hab kann man damit von außen eigene Befehle ausführen.

Ich würde aber gern aus SW einen Befehl ausführen. In dem Fall würde ich gern aus meinem CronJob ein Shellscript ausführen.

Hallo Lars2m5,

dein Plugin muss folgendes Event subscriben:

$this->subscribeEvent(
            'Shopware_CronJob_LenzCronArticleDataQuality',
            'onRun'
);

In der Funktion onRun steht dann dein Code:

public function onRun(Enlight_Components_Cron_EventArgs $args)
{
    exec('echo "wert" > ~/test/uz.txt');
}

Damit der Cronjop auch ausgeführt wird, musst Du in der Install-Methode noch folgenden Code unterbringen:

$sql = '
            INSERT INTO s_crontab (`name`, `action`, `next`, `start`, `interval`, `active`, `end`, `inform_template`, `inform_mail`, `pluginID`)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ';
        Shopware()->Db()->query(
            $sql,
            array(
                $this->getLabel(),
                "LenzCronArticleDataQuality",
                new Zend_Date(),
                null,
                604800,
                1,
                new Zend_Date(),
                "LenzCronArticleDataQuality",
                '{$sConfig.sMAIL}',
                $this->getId()
            )
        );

Am besten änderst Du den Namen des Cronjobs noch von LenzCronArticleDataQuality in den von Dir gewünschten Namen um.

 

Hilft Dir das weiter?

Grüße
Sebastian // Shopdoktor.com