Bagaimana cara mengatur pekerjaan cron di Magento?

Saya sedang mengerjakan versi Magento 1.7.0.2.

Saya ingin mengirim csv melalui email ke pelanggan. Ini harus dilakukan setiap bulan menggunakan cron job di Magento.

Untuk pekerjaan cron config.xml

<crontab>
    <jobs>
        <Module_Store>
            <schedule><cron_expr>0,15,30,45 * * * *</cron_expr></schedule>
            <run><model>clinic/observer::sendMailtoClinic</model></run>
        </Module_Store>
    </jobs>
</crontab>    

Pengamat.php

class Module_Store_Model_Observer {

  public function sendMailtoClinic(Varien_Event_Observer $observer, $content){                        
    $mail = new Zend_Mail();
    $mail->setType(Zend_Mime::MULTIPART_RELATED);
    $mail->setBodyHtml($html_body);
    $mail->setFrom($from_email, $from_email_name);
    $mail->addTo($to_email, $toEmailName);
    $mail->setSubject($subject);
    $file = $mail->createAttachment(file_get_contents($file_path));
    $file->type = 'text/csv';
    $file->disposition = Zend_Mime::DISPOSITION_INLINE;
    $file->encoding = Zend_Mime::ENCODING_BASE64;
    $file->filename = $file_name;
    $mail->send();
  }
}

Konfigurasi admin untuk cron adalah: -

Generate Schedules Every 15
Schedule Ahead for 15
Missed if Not Run Within 35
History Cleanup Every 15
Success History Lifetime 10
Failure History Lifetime 600

Bantuan apa pun akan sangat berarti.


person Neeraj Garg    schedule 17.05.2014    source sumber
comment
Sekarang pekerjaan saya terdaftar di tabel cron_schedule tetapi semua pekerjaan menunjukkan status tertunda dan menunjukkan waktu 'dibuat pada' dan 'dijadwalkan pada' dalam database. Menunggu dari 1 jam terakhir Tapi waktu 'dieksekusi pada' menunjukkan nol.   -  person Neeraj Garg    schedule 21.05.2014
comment
Apakah Anda yakin kodenya benar ??   -  person Meabed    schedule 21.05.2014
comment
Ya, Kode benar. Ketika saya menginstal ekstensi penjadwal AOE dan membuat jadwal, ia berfungsi tetapi secara default (setiap 15 menit) tidak :( Saya menjalankan cron.php dari browser tetapi tidak berhasil   -  person Neeraj Garg    schedule 21.05.2014
comment
Bisakah Anda menjelaskan kasus masalah secara detail?   -  person Meabed    schedule 21.05.2014
comment
pekerjaan cron tidak berjalan secara otomatis di localhost   -  person Neeraj Garg    schedule 21.05.2014
comment
sudahkah Anda memeriksa file log Magento?   -  person Lalit Kaushik    schedule 21.05.2014
comment
Bisakah Anda mengirim email dari localhost Anda? apakah smtp Anda telah diaktifkan dan berfungsi?   -  person Meabed    schedule 21.05.2014
comment
magentocommerce.com/wiki/1_-_installation_and_configuration/   -  person Ravi Patel    schedule 21.05.2014
comment
Sekarang untuk mengatur Crontab di Magento, buka Admin =› system =› konfigurasi =› system =› tab 'Cron (Tugas Terjadwal)'.   -  person Ravi Patel    schedule 21.05.2014
comment
Saya sudah melakukannya, lihat pertanyaan saya   -  person Neeraj Garg    schedule 21.05.2014
comment
jika Anda ingin mengirim email di localhost untuk pengujian, pastikan smtp berfungsi di localhost Anda.   -  person Lalit Kaushik    schedule 21.05.2014
comment
sudahkah Anda mengatur cron.php di crontab Anda.. Anda dapat memeriksanya menggunakan crontab -l   -  person huzefam    schedule 30.05.2014


Jawaban (3)


Jika sistem email berfungsi dengan baik dan Anda masih menghadapi masalah dengan ini, coba yang ini juga:

ganti kode konfigurasi Anda dengan ini:

<crontab>
    <jobs>
        <clinic_cron>
            <schedule><cron_expr>0,15,30,45 * * * *</cron_expr></schedule>
            <run><model>clinic/observer::sendMailtoClinic</model></run>
        </clinic_cron>
    </jobs>
</crontab> 


class [Packagename]_Clinic_Model_Observer { // don't forget to mention package name

  public function sendMailtoClinic(Varien_Event_Observer $observer){                        

    $html_body = 'this is html body text';
    $from_email = '[email protected]';
    $from_email_name = 'sendername';
    $to_email = '[email protected]';
    $toEmailName = 'receiverName';
    $subject = 'subject text here';
    $file_path = 'here/is/file/path';
    $file_name = 'filename.csv';

    $mail = new Zend_Mail();
    $mail->setType(Zend_Mime::MULTIPART_RELATED);
    $mail->setBodyHtml($html_body);
    $mail->setFrom($from_email, $from_email_name);
    $mail->addTo($to_email, $toEmailName);
    $mail->setSubject($subject);
    $file = $mail->createAttachment(file_get_contents($file_path));
    $file->type = 'text/csv';
    $file->disposition = Zend_Mime::DISPOSITION_INLINE;
    $file->encoding = Zend_Mime::ENCODING_BASE64;
    $file->filename = $file_name;
    $mail->send();
  }
}

cari kata "clinic_cron" di daftar tugas Tugas terjadwal di sini : Sistem > Penjadwal > Tampilan Daftar. Pastikan Anda mencari dengan semua tugas yang dijadwalkan, maksud saya lihat paging juga;)

Semoga ini membantu! Semua yang terbaik!

person Lalit Kaushik    schedule 21.05.2014
comment
sistem email berfungsi dengan baik. Satu-satunya masalah adalah cron tidak menjadwalkan secara otomatis di server. Saya perlu menjadwalkan dan menjalankan semua pekerjaan cron menggunakan penjadwal AOE - person Neeraj Garg; 22.05.2014
comment
apakah Anda mengatur Cron di cPanel? - person Lalit Kaushik; 22.05.2014
comment
satu hal lagi, jika crontab tercantum di sini sistem › Penjadwal › Konfigurasi Jadwal, lalu Jadwalkan tugas itu dengan memilih tindakan Jadwalkan sekarang. - person Lalit Kaushik; 22.05.2014
comment
Ya, saya juga mengatakan hal yang sama bahwa menggunakan Jadwal sekarang sudah berfungsi. Tapi itu harus dimulai secara otomatis. Apakah saya menambahkan sesuatu untuk ini di c-panel? Bagaimana saya bisa menambahkan? Bisakah Anda menjelaskannya? - person Neeraj Garg; 22.05.2014
comment
ya, Anda perlu mengatur cronjob di cpanel. lihat ini magento.stackexchange.com/questions/8012 / - person Lalit Kaushik; 22.05.2014

Harus ke app/code/core/Mage/CatalogRule/etc/config.xml

dan putnya

   <config>
     ...
   <crontab>
    <jobs>
    <catalogrule_apply_all>
        <schedule><cron_expr>0 1 * * *</cron_expr></schedule>
        <run><model>catalogrule/observer::dailyCatalogUpdate</model></run>
    </catalogrule_apply_all>
  </jobs>
    ...
 </crontab>
   ...
  </config>

Anda dapat mengubah jadwal sesuai kebutuhan Anda, silakan lihat http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job

person user3656133    schedule 21.05.2014
comment
Jangan pernah mengubah file inti. - person Neeraj Garg; 27.05.2014

Semua kode yang Anda lakukan baik-baik saja, Anda hanya perlu mengatur cron.php sebagai tugas cron di server.

person urfusion    schedule 23.05.2014
comment
Bagaimana cara mengaturnya di server? - person Neeraj Garg; 23.05.2014
comment
Silakan lihat kayako.atlassian .net/wiki/display/DOCS/ - person urfusion; 23.05.2014
comment
Neeraj, hal yang sama yang saya katakan di sini: stackoverflow.com/questions/23709781/ - person Lalit Kaushik; 26.05.2014