Catalog Price Rules

      Catalog Price Rules

      Hallo zusammen!

      Für eine bestimmte Kundengruppe wollen wir Rabatte anbieten. So soll z.B. Kundengruppe "Gold" auf einige Produkte 10% andere 12% usw Rabatt bekommen. Dies Einzurichten ist sehr einfach über die Catalog Price Rules. Sobald der Kunde sich einloggt sieht er die reduzierten Preise als Sonderpreise. Soweit sogut :)

      Leider "resettet" Magento oft die Catalog Price rules und der Kunde sieht nach dem einloggen immer noch die gleichen Preise. Eine Abhilfe ist dann nur das erneute "Apply Rules" im Backend. Ich konnte noch nicht lokalisieren wann genau dieses reset stattfindet. Generell muss man bei jeder Preisänderung die Catalog Price Rules erneuern, aber in den letzten tagen habe ich gar keine Änderungen in Backend gemacht, trotzdem ist es 2-3 mal passiert.

      Nutzt einer von euch diese Funktion und hat ähnliche Probleme erlebt? Ich muss dafür eine Lösung finden da es sich um ein Feature handelt was in der nahen Zukunft vermehrt benutzt werden soll.

      Vielen Dank!
      Nein habe ich nicht gemacht. Ist diese Funktion von Magento neu?
      Wie gebe ich in die cron.php ein das er die Catalog rules wieder setzen soll?

      Bin neu im Gebiet der cronjobs :) soweit ich verstanden habe, ist der eine Teil ein Script, also eine Liste was gemacht werden soll und der andere Teil ist die automatische Ausführung dieses Scriptes an einer bestimmten Uhrzeit, Tag etc.

      Ist die cron.php die "Scriptdatei" und über cpanel stellt man ein wann diese Datei geladen werden soll? Was ist wenn man einige Scripte jede 30 Minuten ausführen will und andere einmal am Tag?
      Eigentlich ganz einfach, ein Cronjob führt ein Script zu einer bestimmten Tageszeit oder in einem Intervall aus wie zB jede Stunde. Das Script liefert Magento mit und muss NICHT erstellt oder bearbeitet werden...

      Wie du das Ganze einrichten musst beschreibt der folgende Link und der Link im Beitrag ganz unten: rackspeed.de/forum/magento-faq…rkleinerung-datenbank-289
      Magento Hosting | Cloud Server | Shopware Hosting | Elasticsearch Hosting
      Unsere Hosting-Lösungen nutzen ultraschnelle SSDs und sind jederzeit skalierbar.
      Hallo!

      Im diesen Links wird beschrieben wie man durch dieses Script die Datenbank klein hält. Wird denn bei ausführung des Scriptes auch die Catalog Price Rules erneuert oder muss ich irgendwo dies noch einstellen?

      Wo kann ich sehen genau welche Aufgaben durch dieses Script durchgeführt werden?

      Immer wenn ich "apply rules" manuel mache, dauert es 60-70 Sekunden bis das backend wieder erreichbar ist. Ich denke mal es benötigt einiges an Ressourcen in diesem Moment. Wäre da ein Intervall von 15 Minuten trotzdem sinnvoll? Ich will nicht dadurch die Performance des Shops beeinträchtigen.
      Erst einmal muss der Cronjob laufen, der Rest wird intern geregelt. Eine kleine Aufstellung der Aufgaben und wann diese ausgeführt werden findest du unten auf dieser Seite Magento - Wiki - How to Set Up a Cron Job => Es werden nicht immer alle Aufgaben bei jedem Aufruf ausgeführt, sondern noch einmal Unterscheidungen getroffen. Wichtig ist nur, dass das Script regelmäßig (15 Minuten) ausgeführt wird.

      CatalogRule dailyCatalogUpdate 0 1 * * * Daily at 01:00am
      Magento Hosting | Cloud Server | Shopware Hosting | Elasticsearch Hosting
      Unsere Hosting-Lösungen nutzen ultraschnelle SSDs und sind jederzeit skalierbar.
      Danke!

      Habe eben das CronJob aktiviert, ganz nach deinen Anweisungen...

      und schon kam die erste Fehlermeldung per Email rein :)


      Quellcode

      1. <br />
      2. <b>Notice</b>: Undefined index: SCRIPT_NAME in <b>/home/[derUsername]/public_html/cron.php</b> on line <b>36</b><br />
      3. <br />
      4. <b>Notice</b>: Undefined index: SCRIPT_FILENAME in <b>/home/[derUsername]/public_html/cron.php</b> on line <b>37</b><br />


      In diesen zwei Zeilen habe ich zu stehen:

      Quellcode

      1. $_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
      2. $_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Logo“ ()

      Das ist interessant, da der Fehler in den letzten Magento-Versionen nicht auftritt obwohl die cron.php identisch ist.

      Da es sich nur um "Notitzen" handelt, habe ich die Datei wie folgt angepasst um die Meldungen zu unterdrücken:

      PHP-Quellcode

      1. $_SERVER['SCRIPT_NAME'] = '';
      2. $_SERVER['SCRIPT_FILENAME'] = '';


      Dieser Codeblock muss vor die von dir zitierten Codezeilen kopiert werden.
      Magento Hosting | Cloud Server | Shopware Hosting | Elasticsearch Hosting
      Unsere Hosting-Lösungen nutzen ultraschnelle SSDs und sind jederzeit skalierbar.
      Die Notiz besagt nur, dass die Variablen vor der Benutzung nicht definiert waren, in dem Sinne kein Fehler. Das Script müsste auch mit dieser Notiz einwandfrei funktionieren...

      Damit die eMails mit dem Hinweis nicht mehr versandt werden, habe ich das Skript schon entsprechend angepasst.
      Magento Hosting | Cloud Server | Shopware Hosting | Elasticsearch Hosting
      Unsere Hosting-Lösungen nutzen ultraschnelle SSDs und sind jederzeit skalierbar.
      Jetzt bekomme ich..

      Quellcode

      1. <br />
      2. <b>Fatal error</b>: Uncaught exception 'Exception' with message 'Warning: strpos() [&lt;a href='function.strpos'&gt;function.strpos&lt;/a&gt;]: Empty delimiter in /home/XXXX/public_html/lib/Zend/Controller/Request/Http.php on line 487' in /home/XXXX/public_html/app/code/core/Mage/Core/functions.php:240
      3. Stack trace:
      4. #0 [internal function]: mageCoreErrorHandler(2, 'strpos() [&lt;a hr...', '[I]/home/XXXX/[/I]...', 487, Array)
      5. #1 /home/XXXX/public_html/lib/Zend/Controller/Request/Http.php(487): strpos('/cron.php', '')
      6. #2 /home/XXXX/public_html/lib/Zend/Controller/Request/Http.php(528): Zend_Controller_Request_Http-&gt;setBaseUrl()
      7. #3 /home/XXXX/public_html/app/code/core/Mage/Core/Controller/Request/Http.php(165): Zend_Controller_Request_Http-&gt;getBaseUrl()
      8. #4 /home/XXXX/public_html/app/code/core/Mage/Core/Controller/Request/Http.php(108): Mage_Core_Controller_Request_Http-&gt;getBaseUrl()
      9. #5 /home/XXXX/public_html/app/code/core/Mage/Core/Model/App.php(280): Mage_Core_Controller_Request_Http-&gt;setPathInfo()
      10. #6 /home/XXXX/publi in <b>/home/XXXX/public_html/app/code/core/Mage/Core/functions.php</b> on line <b>240</b><br />

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Logo“ ()

      Also am cron.php selber habe ich garnichts geändert. Nur die extra Eingaben die du letztens eingegeben hast wegen der früheren Fehlermeldung

      Edit:
      Seit der Fehlermeldung heute morgen ist die einzige Änderung im cpanel den CronJob command zu ändern auf wget

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Logo“ ()

      Habe mir mal die entsprechenden Dateien mal angesehen:

      in Http.php

      Quellcode

      1. 484 // Does the baseUrl have anything in common with the request_uri?
      2. 485 $requestUri = $this->getRequestUri();
      3. 486
      4. 487 if (0 === strpos($requestUri, $baseUrl)) {


      in functions.php

      Quellcode

      1. 240 throw new Exception($errorMessage);


      Leider werde ich daraus nicht schlau :(

      Ich verstehe nicht wieso auf einmal die cron.php diese Fehlermeldungen ausspuckt..
      Also seit 19:15 habe ich keine Fehlermeldung mehr bekommen. Ich gucke mal ob alles noch läuft

      Edit:
      In Cpanel sheint alles ok zu sein, nutze jetzt den wget Befehl. Keine Ahnung aber ob tatsächlich dahinter der cronjob läuft. Spätestens wenn mal die Price Rules rausfliegen sehe ich es. Oder gibt es noch einen weg?

      Vielen Dank für deine Hilfe :)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Logo“ ()