Konfigurer planlagte oppgaver i Magento

Cron er et viktig verktøy som lar deg utføre skript med bestemte regelmessige intervaller. Det har også blitt et viktig aspekt for webbaserte applikasjoner. Det er mange måter hvor cron er nyttig for nettsteder, fra å sende vanlige nyhetsbrevmails for å synkronisere databasen med tredjepartssystemer. Du kan også bruke cron til å rydde opp lagringskapasiteten for å forbedre den generelle ytelsen til et program.

Magento støtter cron i kjernen selv, som det gjør med flere andre verktøy! Det lar deg sette opp planlagte oppgaver i modulen, slik at de kan løpe med jevne mellomrom. Magento kjører alle cron-oppgavene ved hjelp av "cron.sh" og "cron.php" -filene som ligger i roten til nettstedet. Så du må sørge for at du har konfigurert systemnivå cron for å kjøre "cron.sh" -filen med jevne mellomrom, som til slutt utløser Magento cron-systemet. Og til slutt samler Magento alle cron-jobbene i modulene, og kjører dem om nødvendig i det aktuelle cron-løp.

Selv om Magento allerede har levert mange cron-jobber i kjernemodulene selv, kan du opprette en tilpasset cron-oppgave i modulen din også. Og å skape en tilpasset modul er akkurat det vi snakker om i de kommende seksjonene.

Et blikk på filoppsettet

Vi lager en enkel tilpasset modul med navnet "Customcron". Her er listen over filer som kreves for ønsket oppsett:

  • app / etc / modules / Envato_All.xml: Det er en fil som brukes til å aktivere vår egendefinerte modul.
  • app / code / local / Envato / Customcron / etc / config.xml: Det er en modulkonfigurasjonsfil der vi vil erklære den egendefinerte cron-jobben.
  • app / kode / lokal / Envato / Customcron / Model / Customcron.php: Det er en modellfil der vi skal definere cron-jobblogikken.

Tilpasset modul: Konfigurer filene og mappene

Først må vi opprette en modul enabler fil. Opprett en fil "app / etc / modules / Envato_All.xml" og lim inn følgende innhold i den filen. Vi har brukt "Envato" som vår modulnavn og "Customcron" som vårt modulnavn. Det aktiverer vår "Customcron" -modul som standard.

    ekte lokal   

Deretter må vi opprette en modulkonfigurasjonsfil. Opprett "app / code / local / Envato / Customcron / etc / config.xml" og lim inn følgende innhold i den filen.

    1.0       5,10,15,20,25,30,35,40,45,50,55 * * * *   customcron / customcron :: customcrontask        Envato_Customcron_Model    

Filen "config.xml" ser ganske enkelt ut - det erklærer versjonsnummer og modellklasser i henhold til Magento-konvensjonene. Men den viktige koden for oss er , som brukes til å erklære alle jobbene. Det er en av "event observatørene" som brukes av Magento for å samle alle cron jobber i modulene.

Videre, under  tag, har vi erklært vår tilpassede crontab jobb ved hjelp av  stikkord. Det er en slags unik identifikator for cron jobben. Selv om vi i ovennevnte fil bare har opprettet en enkelt oppgave, kan du sette opp flere cron-jobber under  stikkord. Neste, under vi har definert og tags.

De tag definerer cron intervaller inne i tag hvor jobben vil løpe regelmessig. I vårt tilfelle vil den egendefinerte cron-oppgaven løpe hvert femte minutt. Men vent, hva skal det gjøre hvert femte minutt? Det er akkurat det som tag står for! Den erklærer "Modellmetoden" som vil bli kalt av Magento under den tilpassede cron jobben.

Deretter oppretter vi en modell "Cronjob.php" -fil. Opprett "app / code / local / Envato / Customcron / Model / Customcron.php" med følgende innhold.

setToEmail ('[email protected] ') -> setBody (' Body of the Custom Cron-oppgaven går her ') -> setSubject (' Subject: Custom Cron Oppgave (hvert 5. minutt) '.date ("Ymd H: i: s ")) -> setFromEmail ('[email protected] ') -> setFromName (' Magento Store Admin ') -> setType (' html '); $ Post-> send (); 

Så som vi erklærte tidligere, har vi definert "customcrontask" modellmetoden. I denne metoden sender vi bare en e-post ved hjelp av Magento-e-postkursverktøyet. Men enda viktigere, denne metoden vil bli kalt jevnlig, hver gang jobben går, selvfølgelig hvert femte minutt.

Og til slutt, bør du sørge for at du har opprettet en cronjob-oppføring i systemet ditt. For Linux må du bare legge til følgende linje i crontab-filen.

5,10,15,20,25,30,35,40,45,50,55 * * * * / bin / sh /path/to/magento/site/cron.sh

Du trenger bare å erstatte "/ path / to / magento / site" med den faktiske banen til Magento-installasjonen. Og for Windows kan du gjøre det samme ved å bruke planlagte oppgaver. Men i Windows må du bruke filen "/path/to/magento/site/cron.php", da "cron.sh" ikke støttes.

Så det er veldig greit å koble dine egendefinerte cron-jobber inn i Magento cron-systemet! Det er det for i dag, og jeg håper du har lært noe nyttig i Magento. Del dine tanker ved å bruke feedet under!