Servus, jetzt muß ich hier auch mal um Hilfe bitten, denn im Moment werde ich wirklich blöd bei der Aufgabe. Meine Zielsetzung ist es die cronjobs von der Commandline aus aufzurufen, da ich so in der php.ini ein höheres memmory_limit und execution_time zuweisen kann als für den apachen. Irgendwie bekomme ich es aber nicht hin, vielleicht hat ja einer von Euch eine einleuchtende Idee was ich falsch mache. Was ich bisher versucht habe: 1) Über http aufgerufen funktioniert es, sprich http://www.domain.tld/shopware.php?module=backend&controller=cron
gibt mir das gewünschte „processing jobs“ und im backend kann ich auch sehen das die „nächste ausführung“ weitergesprungen ist. Ich will die cronjobs allerdings nicht über den wget workaround aufrufen sondern direkt über die CLI. 2) Für die CLI sollte der Befehl ja so aussehen php5 /pfad/zu/shopware/shopware.php module=backend controller=cron
Das liefert mir als Ergebnis allerdings meine Shop Startseite und nicht das gewünschte „processing jobs“ und die „nächste ausführung“ ist auch nicht weiter gesprungen. 3) Der Interpreter passt, ein „php5 -v“ gibt PHP 5.3.6-6~dotdeb.0 with Suhosin-Patch (cli) (built: Apr 17 2011 12:27:20) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with the ionCube PHP Loader v4.0.9, Copyright (c) 2002-2011, by ionCube Ltd., and with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
4) Mal schnell ein kleines Skript zusammengeschrieben das mir die $argc und $argv ausgibt (wobei das eigentlich egal ist, da auf der CLI „register_argc_argv“ hardcodiert auf TRUE steht). Das Skript „test.php“ <?php var_dump($argc);
var_dump($argv);
?>
ausgeführt als php5 test.php module=backend controller=cron
ergibt int(3) array(3) { [0]=\> string(8) "test.php" [1]=\> string(14) "module=backend" [2]=\> string(15) "controller=cron" }
Sprich von meiner Warte aus sieht alles gut aus, was mache ich falsch? Warum wird über den 2) Befehl die Startseite des Shops ausgegeben und nicht das gewünschte „processing jobs“? Ach ja, ich bin auf einem eigenen Server, mit ssh und allem was dazu gehört, Ubuntu falls es interessiert.
In die FAQ hattest du hier mal geschaut, von wegen Rechten und so? Shopware Cronjobs 3.5
Evtl. geht es ja so. #!/bin/bash /usr/bin/env -i /kunden/111/appl/php-5.3.5/bin/php-cli -c /kunden/111/webseiten/php.shopware.ini -f /kunden/111/webseiten/demotest1/shopware.php module=backend controller=cron
[quote=„Stefan Heyne“]In die FAQ hattest du hier mal geschaut, von wegen Rechten und so? Shopware Cronjobs 3.5[/quote] Hi, ja das habe ich schon durch. Die Rechte für die shopware.php stehen auf 755 obwohl das eigentlic hegal ist da ich den interpreter ja im Befehl mit aufrufe. Aber wie gesagt, sicherheitshalber steht es im Moment auf 755 Den Versuch mit einer eigenen shopware-cron.php und den interpretor dort rein schreiben habe ich auch schon durch, ebenfalls nur die Startseite des Shops die mir präsentiert wird. [quote=„ottscho“]Evtl. geht es ja so. #!/bin/bash /usr/bin/env -i /kunden/111/appl/php-5.3.5/bin/php-cli -c /kunden/111/webseiten/php.shopware.ini -f /kunden/111/webseiten/demotest1/shopware.php module=backend controller=cron
[/quote] Danke für den Versuch, leider hat er auch nicht geholfen, ebenfalls nur die Startseite die mir auf der CLI ausgegeben wird. Wenn ich mir das phpinfo() für die CLI anschaue dann kann ich sehen das die korrekte php.ini Datei angesprochen wird und der IonCube Loader und Co sind ja auch aktiv. Frage an Shopware, wo und wie werden die übergebenen Variablen denn genau ausgewertet? Ich habe schlicht und ergreifend das Gefühl das übergebene Variablen nicht korrekt ausgewertet werden. In meinem test.php kann man ja sehen das sie Variablen zumindest als $argv in der Datei ankommen, aber sie scheinen von Shopware nicht ausgewertet zu werden. Frage 2, ist irgend eine spzielles Modul (neben den Cron Dingern) notwendig damit der CLI Aufruft funktioniert? Oder fehlt mir ein spezielles php Modul?
Frage in die Runde, hat sonst keiner Ideen mehr wo das Problem liegen könnte? Mir 3.0.5 hat der Aufruf über die CLI wunderbar bei uns funktioniert, aber das war ja eine andere technische Grundlage.
Hast du das Cronjob Plugin denn aktiviert? Kannst du den Cronjob-Controller denn via Webbrowser aufrufen? Also www.shop.de/backend/cron
Ja, siehe Punkt 1) im ersten Beitrag
Probiere mal zusätzlich die Action mit anzugeben: module=backend controller=cron action=index
Und hier die Lösung, ein großes Lob an den Support von Shopware der es gelößt hat. php5 /pfad/zu/shopware.php backend/cron
und php5 /pfad/zu/shopware.php backend/newsletter
sind des Rätsels Lösung. So erhalte ich das ersehnte “Processing Shopware_CronJob_Birthday” respektive “Nothing to do…” für die Newsletter als Antwort auf der Konsole. Evtl. sollte dieses als Lösung noch mit in den wiki Artikel aufgenommen werden.
[quote=“Stefan Hamann”]Probiere mal zusätzlich die Action mit anzugeben: module=backend controller=cron action=index[/quote] funktioniert leider auch nicht. Eigentlich habe ich an unserer php Installation nicht rumgepfuscht, nur ein paar Speicherwert verstellt das war es. Aber wie dem vorherigen Beitrag entnommen werden kann, so kann ich die cronjobs erfolgreich auslösen.
Merkwürdig - das muss ja eigentlich ein Konfigurationsproblem sein - wir nehmen das als alternative Syntax mit im Wiki Artikel auf!