Magento 2 Cron funktioniert nicht

7
*/1 * * * * www-data php /var/www/magento-2/bin/magento cron:run
*/1 * * * * www-data php /var/www/magento-2/update/cron.php
*/1 * * * * www-data php /var/www/magento-2/bin/magento setup:cron:run

Dies ist die Cron-Job-Einstellung und meine crontab.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
  <group id="default">
    <job name="send_call" instance="Custom\Module\Model\Observer\Event" method="sendEmail">
      <schedule>*/5 * * * *</schedule>
    </job>
  </group>
</config>

Ich überprüfe oft, aber Cron funktioniert nicht

Prinz Yadav
quelle
und Fehlermeldung?
MagenX
Nichts Fehler, aber ich schreibe ein Protokoll in die sendEmail-Funktion, aber wenn ich finde, dass das Protokoll leer ist
Prince Yadav
Die von Ihnen angegebene Methode ist senMail. Ist das korrekt? Sollte es sendMail senden?
Smartie
Ich habe hier falsch geschrieben, aber in Code, der geschrieben ist, geben Sie bitte eine genaue Antwort
Prinz Yadav
1. Haben Sie versucht, php /var/www/magento-2/bin/magento setup:cron:runmanuell auszuführen ? 2. Wo befindet sich Ihre crontab.xml?
BuskaMuza

Antworten:

9

Leeren Sie den Cache und führen Sie Cron erneut aus.

php bin/magento cache:flush
php bin/magento cron:run
Mukesh Chapagain
quelle
Das hat bei mir funktioniert, bei dem Szenario, das ich hatte. Ich bin mir jedoch nicht sicher, ob dies ein empfohlener Ansatz ist.
Neugieriger Entdecker
5

Wenn das Leeren des Caches mit php bin/magento cache:flushnicht funktioniert, überprüfen Sie die cron_scheduleTabelle und suchen Sie dort nach Ihrem Jobcode. Es besteht die Möglichkeit, dass eine der Instanzen aufgrund eines Fehlers in Ihrem Beobachter mit dem Status "Laufen" feststeckt. Wenn ja, löschen Sie einfach diese Zeile aus der Tabelle cron_schedule und versuchen Sie erneut, den cron auszuführen.

Daniel Kratohvil
quelle
Vielen Dank! Dies war das Problem in meinem Fall. Es gab nur wenige Cronjobs, deren Name im Modul umbenannt wurde, und daher versagten sie mit der Meldung "Kein Rückruf gefunden"
Kumar A.
Ich habe die gleiche Fehlermeldung "Keine Rückrufe gefunden". Ich habe meinen Cronjob-Namen im Modul überprüft. Er ist jedes Mal der gleiche Name und hat immer noch diese Fehlermeldung. Haben Sie eine Lösung, um dieses Problem zu beheben?
Ronak Parmar
@RonakParmar Überprüfen Sie Ihr <job> -Tag in der XML-Datei der Crontab. Sowohl die Eigenschaften "Instanz" als auch "Methode" müssen angegeben und gültig sein. Die Eigenschaft "instance" muss auf die Datei verweisen, in der die auszuführende Funktion vorhanden ist, und die Eigenschaft "method" muss der Name der Funktion sein, die in dieser Datei ausgeführt werden soll.
Daniel Kratohvil
@ DanielKratohvil Danke für die Unterstützung. Ich habe mein Problem behoben. Ich habe crontab.xml des Magento-Kernmoduls verwendet und die erforderlichen Änderungen gemäß meinem benutzerdefinierten Modul vorgenommen. Jetzt funktioniert mein Cron-Job gut. Vielen Dank.
Ronak Parmar
Vielen Dank !! das funktioniert für mich
Giordhano
2

Ich denke, Sie müssen Ihren Cron-Dienst in Host Server neu starten

Befehle für RHEL / Fedora / CentOS / Scientific Linux-Benutzer

Wenn Sie Redhat (RHEL) / Fedora / CentOS Linux verwenden, verwenden Sie die folgenden Befehle.

Aufgabe: Starten Sie den Cron-Service

Verwenden Sie zum Starten des Cron-Dienstes:

# /etc/init.d/crond start

ODER RHEL / CentOS 5.x / 6.x Benutzer:

# service crond start

ODER RHEL / Centos Linux 7.x-Benutzer:

# systemctl start crond.service

Aufgabe: Stoppen Sie den Cron-Service

Verwenden Sie zum Beenden des Cron-Dienstes:

# /etc/init.d/crond stop

ODER RHEL / CentOS 5.x / 6.x Benutzer:

# service crond stop

ODER RHEL / Centos Linux 7.x-Benutzer:

# systemctl stop crond.service

Aufgabe: Starten Sie den Cron-Dienst neu

Verwenden Sie zum Neustarten des Cron-Dienstes:

# /etc/init.d/crond restart

ODER RHEL / CentOS 5.x / 6.x Benutzer:

# service crond restart

ODER RHEL / Centos Linux 7.x-Benutzer:

# systemctl restart crond.service
Sheshgiri Anvekar
quelle
0

Die Gruppe mit der ID "Standard" arbeitet alle 15 Minuten. Versuchen Sie es durch den "Index" zu ersetzen:

...
 <group id="index">
...
Vitalii
quelle
0

Sie können den Befehl "which php" verwenden, um den genauen PHP-Pfad anzuzeigen, der auf dem Server ausgeführt wird. Verwenden Sie diesen PHP-Pfad, um ihn vom SSH-Benutzer zu konfigurieren, der für das Magento verwendet wird, nicht vom Root-Benutzer.

Gehen Sie zur Magento-Installation und führen Sie sie aus

crontab -e

* * * * * path_to_php var/www/html/***.com/v2/bin/magento cron:run
* * * * * path_to_php var/www/html/***.com/v2/update/cron.php
* * * * * path_to_php var/www/html/***.com/v2/bin/magento setup:cron:run
Rv Singh
quelle