Skip to content

Instantly share code, notes, and snippets.

@natrod
Last active August 29, 2015 14:22

Revisions

  1. natrod revised this gist May 29, 2015. 1 changed file with 21 additions and 14 deletions.
    35 changes: 21 additions & 14 deletions apply-rules
    Original file line number Diff line number Diff line change
    @@ -5,49 +5,56 @@ ini_set("memory_limit","11364M");


    Mage::setIsDeveloperMode(true);
    $time_start = microtime(true);
    $premem=memory_get_usage(true);
    $time_start = microtime(true); //get start time
    $premem=memory_get_usage(true); //get initial memory usage

    Mage::app();
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

    try {
    Mage::getModel('catalogrule/rule')->applyAll();

    //Applying catalog Rules
    Mage::getModel('catalogrule/rule')->applyAll();
    Mage::app()->removeCache('catalog_rules_dirty');

    //Message Body for status mail
    $Report="Catalog Rules have been applied via cron job at ".date("d-m-y, H:i:s")."<br />".PHP_EOL;

    } catch (Exception $e) {

    $Report="Catalog Rules failure when applied via cron job at ".date("d-m-y, H:i:s")."<br />".PHP_EOL;;
    $Report="Catalog Rules failure when applied via cron job at ".date("d-m-y, H:i:s")."<br />".PHP_EOL;
    $date=date("Y-m-d-H-i-s");
    $logname="catalog-rule-cron".$date.".log";
    Mage::log(print_r($e->getMessage(),true),null,$logname);
    Mage::log(print_r($e->getMessage(),true),null,$logname);

    }

    $postmem=memory_get_usage(true);
    $time_end = microtime(true);
    $postmem=memory_get_usage(true); //memory after rules have been applied
    $time_end = microtime(true); //time at completion

    $tt=$time_end-$time_start; //total time taken

    $tt=$time_end-$time_start;
    $tmem=echo_readable_memory_usage($postmem-$premem);
    $tmem=echo_readable_memory_usage($postmem-$premem); // Difference between memory atscript end and script start


    $Report.="TOTAL EXECUTION TIME ".$tt."<br />".PHP_EOL;
    $Report.= "PRE MEM ".$premem."<br />".PHP_EOL;
    $Report.= "POST MEM ".$postmem."<br />".PHP_EOL;
    $Report.= "Total MEM Consumption ".$tmem."<br />".PHP_EOL;

    echo $Report;
    $reciever="sample-email@test.com";
    $cc=array('[email protected]');
    $reciever="[email protected]"; // To
    $cc=array('sample-email2@test.com'); //If you want to cc the status to a few others


    //Sending a status mail
    $mail = new Zend_Mail();
    $mail->setFrom("cronjobs@aceturtle.com","Catalog Rules Cron" );
    $mail->setFrom("cronjobs@myshop.com","Catalog Rules Cron" );
    $mail->addTo($reciever);
    foreach($cc as $c )
    {
    $mail->addCc($c);
    }
    $mail->setSubject("Catalog Rule Cron Status".date("d-m-y"));
    $mail->setSubject("Catalog Rule Cron Status".date("d-m-y"));
    $mail->setBodyHtml($Report);
    $mail->send();

  2. natrod created this gist May 29, 2015.
    66 changes: 66 additions & 0 deletions apply-rules
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    <?php
    require_once 'app/Mage.php';
    ini_set('display_errors', 1);
    ini_set("memory_limit","11364M");


    Mage::setIsDeveloperMode(true);
    $time_start = microtime(true);
    $premem=memory_get_usage(true);
    Mage::app();
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

    try {
    Mage::getModel('catalogrule/rule')->applyAll();
    Mage::app()->removeCache('catalog_rules_dirty');
    $Report="Catalog Rules have been applied via cron job at ".date("d-m-y, H:i:s")."<br />".PHP_EOL;

    } catch (Exception $e) {

    $Report="Catalog Rules failure when applied via cron job at ".date("d-m-y, H:i:s")."<br />".PHP_EOL;;
    $date=date("Y-m-d-H-i-s");
    $logname="catalog-rule-cron".$date.".log";
    Mage::log(print_r($e->getMessage(),true),null,$logname);

    }

    $postmem=memory_get_usage(true);
    $time_end = microtime(true);

    $tt=$time_end-$time_start;
    $tmem=echo_readable_memory_usage($postmem-$premem);


    $Report.="TOTAL EXECUTION TIME ".$tt."<br />".PHP_EOL;
    $Report.= "PRE MEM ".$premem."<br />".PHP_EOL;
    $Report.= "POST MEM ".$postmem."<br />".PHP_EOL;
    $Report.= "Total MEM Consumption ".$tmem."<br />".PHP_EOL;

    echo $Report;
    $reciever="[email protected]";
    $cc=array('[email protected]');

    $mail = new Zend_Mail();
    $mail->setFrom("[email protected]","Catalog Rules Cron" );
    $mail->addTo($reciever);
    foreach($cc as $c )
    {
    $mail->addCc($c);
    }
    $mail->setSubject("Catalog Rule Cron Status".date("d-m-y"));
    $mail->setBodyHtml($Report);
    $mail->send();


    function echo_readable_memory_usage($mem_usage) {


    if ($mem_usage < 1024)
    return $mem_usage." bytes";
    elseif ($mem_usage < 1048576)
    return round($mem_usage/1024,2)." KB";
    else
    return round($mem_usage/1048576,2)."MB";


    }