Monday, July 4, 2011

Re: cacheQueries and memory usage

How big is the data file?

MM

On Mon, Jul 4, 2011 at 8:55 AM, DanielMedia <danielmedia21@gmail.com> wrote:
Here's the entire shell script if that helps:

<?

class ParseCusipAttributesTask extends Shell {

       var $uses = array('MasterIssue');

       function execute($args = array()) {

               $file = '/home/dan/cusip_master/CUMASTER_ATTRIBUTE.PIP';

               $record_count = explode(' ', exec("wc -l $file"));
               $record_count = number_format($record_count[0]);

               $handle = @fopen($file, 'r');

               if($handle) {

                       $i = 0;

                       while(!feof($handle)) {

                               $buffer = fgets($handle, 4096);

                               $segments = explode('|', $buffer);

                               $cusip_prefix = $segments[0] . $segments[1];

                               $data = array();
                               $data['MasterIssue']['alternative_min_tax'] = $segments[2];
                               $data['MasterIssue']['bank_q'] = $segments[3];
                               $data['MasterIssue']['callable'] = $segments[4];
                               $data['MasterIssue']['activity_date'] = $segments[5];
                               $data['MasterIssue']['first_coupon_date'] = $segments[6];
                               $data['MasterIssue']['init_pub_off'] = $segments[7];
                               $data['MasterIssue']['payment_frequency'] = $segments[8];
                               $data['MasterIssue']['currency_code'] = $segments[9];
                               $data['MasterIssue']['domicile_code'] = $segments[10];
                               $data['MasterIssue']['underwriter'] = $segments[11];
                               $data['MasterIssue']['us_cfi_code'] = $segments[12];
                               $data['MasterIssue']['closing_date'] = $segments[13];
                               $data['MasterIssue']['ticker_symbol'] = $segments[14];
                               $data['MasterIssue']['iso_cfi'] = $segments[15];
                               $data['MasterIssue']['depos_eligible'] = $segments[16];
                               $data['MasterIssue']['pre_refund'] = $segments[17];
                               $data['MasterIssue']['refundable'] = $segments[18];
                               $data['MasterIssue']['remarketed'] = $segments[19];
                               $data['MasterIssue']['sinking_fund'] = $segments[20];
                               $data['MasterIssue']['taxable'] = $segments[21];
                               $data['MasterIssue']['form'] = $segments[22];
                               $data['MasterIssue']['enhancements'] = $segments[23];
                               $data['MasterIssue']['fund_distrb_policy'] = $segments[24];
                               $data['MasterIssue']['fund_inv_policy'] = $segments[25];
                               $data['MasterIssue']['fund_type'] = $segments[26];
                               $data['MasterIssue']['guarantee'] = $segments[27];
                               $data['MasterIssue']['income_type'] = $segments[28];
                               $data['MasterIssue']['insured_by'] = $segments[29];
                               $data['MasterIssue']['ownership_restr'] = $segments[30];
                               $data['MasterIssue']['payment_status'] = $segments[31];
                               $data['MasterIssue']['preferred_type'] = $segments[32];
                               $data['MasterIssue']['putable'] = $segments[33];
                               $data['MasterIssue']['rate_type'] = $segments[34];
                               $data['MasterIssue']['redemption'] = $segments[35];
                               $data['MasterIssue']['source_doc'] = $segments[36];
                               $data['MasterIssue']['sponsoring'] = $segments[37];
                               $data['MasterIssue']['voting_rights'] = $segments[38];
                               $data['MasterIssue']['warrant_assets'] = $segments[39];
                               $data['MasterIssue']['warrant_status'] = $segments[40];
                               $data['MasterIssue']['warrant_type'] = $segments[41];
                               $data['MasterIssue']['where_traded'] = $segments[42];
                               $data['MasterIssue']['auditor'] = $segments[43];
                               $data['MasterIssue']['paying_agent'] = $segments[44];
                               $data['MasterIssue']['tender_agent'] = $segments[45];
                               $data['MasterIssue']['xfer_agent'] = $segments[46];
                               $data['MasterIssue']['bond_counsel'] = $segments[47];
                               $data['MasterIssue']['financial_advisor'] = $segments[48];
                               $data['MasterIssue']['municipal_sale_date'] = $segments[49];
                               $data['MasterIssue']['sale_type'] = $segments[50];
                               $data['MasterIssue']['offering_amount'] = $segments[51];
                               $data['MasterIssue']['offering_amount_code'] = $segments[52];

                               if(strlen($cusip_prefix) == 8) {

                                       $this->MasterIssue->cacheQueries = false;

                                       // This causes memory issues
                                       $issues = $this->MasterIssue->find('all', array(
                                               'conditions' => array('MasterIssue.cusip LIKE' =>
$cusip_prefix . '%'),
                                               'fields' => array('MasterIssue.id', 'MasterIssue.cusip')
                                       ));

                                       // This does not cause memory issues
                                       //$issues = $this->MasterIssue->query("SELECT * FROM
master_issues WHERE cusip LIKE '$cusip_prefix%'", false);

                                       foreach($issues as $issue) {
                                               $this->out(number_format($i) . ' of ' . $record_count . ' : ' .
$issue['MasterIssue']['cusip']);
                                               $this->MasterIssue->id = $issue['MasterIssue']['id'];
                                               $this->MasterIssue->cacheQueries = false;
                                               $this->MasterIssue->save($data);
                                       }

                               }

                               $i++;

                               $this->out('Memory used: ' . memory_get_usage(true));

                               $this-
>out('---------------------------------------------------------');

                       }

                       $this->out("Finished processing $i records");

               }

               fclose($handle);

       }

}

?>

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
 
 
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: