Je voulais configurer un travail cron dans mon module. J'ai suivi les instructions du wiki Magento - how_to_setup_a_cron_job , mais mon travail cron ne s'exécute tout simplement pas.
Ceci est mon config.xml (app/code/local/Roomstory/Facture/etc/config.xml)
<?xml version="1.0"?>
<config>
<modules>
<Roomstory_Invoice>
<version>0.1.1</version>
</Roomstory_Invoice>
</modules>
<!-- -->
<crontab>
<jobs>
<roomstoryinvoice_setstatus>
<schedule><cron_expr>*/10 * * * *</cron_expr></schedule>
<run><model>roomstory_invoice/setstatus::run</model></run>
</roomstoryinvoice_setstatus>
</jobs>
</crontab>
</config>
Et c'est ma classe. (app/code/local/Roomstory/Invoice/Model/Setstatus.php)
<?php
class Roomstory_Invoice_Model_Setstatus {
public function run() {
return true;
}
}
?>
J'ai installé un module Cron Scheduler, qui affiche mon travail cron dans la liste, mais lorsque j'essaie de "lancer le programme", (erreur)
Rappel non valide: roomstory_invoice/setstatus :: run n'existe pas
Ce quelque chose de simple, après beaucoup d'essais, je ne suis toujours pas en mesure de trouver l'erreur. Veuillez indiquer un autre moyen de le faire ou indiquer l’erreur dans ce code.
Merci!
Dans vos modules config.xml
, mettez ce qui suit:
<config>
<global>
<models>
<roomstoryinvoicecron>
<class>Roomstory_Invoice_Model</class>
</roomstoryinvoicecron>
</models>
</global>
<crontab>
<jobs>
<roomstoryinvoicecron>
<schedule>
<cron_expr>*/10 * * * *</cron_expr>
</schedule>
<run>
<model>roomstoryinvoicecron/observer::setStatus</model>
</run>
</roomstoryinvoicecron>
</jobs>
</crontab>
</config>
Dans app/code/local/Roomstory/Invoice/Model/Observer.php
, ajoutez ce qui suit:
<?php
class Roomstory_Invoice_Model_Observer {
public function setStatus() {
Mage::log("WORKS!");
}
}
Assurez-vous que la journalisation est activée et que cela devrait fonctionner, vérifiez le journal pour en être sûr;)
Assurez-vous d’ajouter le fichier crento.sh de Magento dans crontab
crontab -e
*/5 * * * * /bin/sh /path-to-magento/cron.sh
<crontab>
<jobs>
<CompanyName_ModuleName>
<schedule>
<cron_expr>*/5 * * * *</cron_expr>
</schedule>
<run>
<model>ModuleName/observer::setStatus</model>
</run>
</CompanyName_ModuleName>
</jobs>
</crontab>
et créez le fichier Observer.php dans Model avec
class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{
public function setStatus()
{
}
}
Vous pouvez facilement créer un module pour le travail cron en suivant simplement les étapes suivantes:
Créez un fichier Config.xml et définissez-y le travail cron.
<?xml version="1.0"?>
<config>
<crontab>
<jobs>
<Namespace_Module>
<schedule>
<cron_expr>* * * * *</cron_expr>
</schedule>
<run>
<model>module/observer::method</model>
</run>
</Namespace_Module>
</jobs>
</crontab>
</config>
Votre méthode d'observateur:
class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{
public function setStatus()
{
//your action
}
}
maintenant, dernière étape, allez dans votre cpanel d’hébergement et définissez le chemin et l’heure d’exécution du fichier cron.php dans la section cron job
par défaut, vous pouvez définir un chemin tel que php -f /home/mercodec/public_html/cron.php
dans magento.
avant cela, vous devez exécuter ce script sur votre terminal . Pour Ubuntu: */1 * * * */usr/bin/php /var/www/html/modulename/cron.php>/dev/null