Just to chip in with another possible cause:

I see you're doing all of this in a controller (and others have talked
about whether that's a good idea). Have you got the web debug toolbar
enabled? If so, it could be keeping a log of all DB queries executed
in your action. I had something similar with a batch job in 1.3/1.4.

There 's a trac ticket which gives some workarounds:
http://trac.symfony-project.org/ticket/3039

Hope this helps.

cheers,

Tony.

On Apr 12, 8:53 am, Richard U <richard....@gmail.com> wrote:
> Dennis thats the function if you want to have a look at it...
>
>         public function executeIndex(sfWebRequest $request) {
>
>                 ini_set('memory_limit','512M');
>                 set_time_limit(60*5);
>                 sfConfig::set('sf_logging_enabled', false);
>                 sfConfig::set('sf_web_debug', false);
>
>                 $timer = new Timer;
>                 $timer->start_time();
>
>                 $this->submited_bulk_stats =
> $request->getParameterHolder()->get('bulk_stats');
>
>                 $this->form = new BulkAddStatsForm();
>
>                 $this->count_updated_records = 0;
>                 $this->count_inserted_records = 0;
>
>                 if ($request->isMethod('post'))
>                 {
>                         
> $this->form->bind($request->getParameter('bulk_stats'),
> $request->getFiles('bulk_stats'));
>                         if ($this->form->isValid())
>                         {
>                                 $values = $this->form->getValues();
>
>                                 $file = $this->form->getValue('file');
>                                 $file_name = 
> str_replace($file->getOriginalExtension(), '',
> $file->getOriginalName());
>                                 $save_to = 
> sfConfig::get('sf_upload_dir').DIRECTORY_SEPARATOR.'uploaded_'.$file_name.' 
> _'.date("dmYHis").$file->getOriginalExtension();
>                                 $file->save($save_to);
>
>                                 echo "<br>File saved: $save_to";
>                                 echo "<br>File size: ".filesize($save_to);
>
>                                 // get accounts
>                                 $accounts = AccountsPeer::doSelect(new 
> Criteria());
>                                 $re_indexed_accounts = 
> $re_indexed_accounts_by_id = array();
>                                 foreach ($accounts as $tmp_account) {
>                                         
> $re_indexed_accounts[$tmp_account->getAffName().$tmp_account->getAffUser()]
> = $tmp_account;
>                                         
> $re_indexed_accounts_by_id[$tmp_account->getId()] = $tmp_account;
>                                 }
>
>                                 // get parking programs
>                                 $parking_programs = 
> ParkingProgramPeer::doSelect(new Criteria());
>                                 $re_indexed_parking_programs = array();
>                                 foreach ($parking_programs as $pp) {
>                                         
> $re_indexed_parking_programs[$pp->getId()] = $pp;
>                                 }
>
>                                 // Process the uploaded file
>                                 $objReader = new PHPExcel_Reader_Excel2007;
>                                 $objPHPExcel = $objReader->load($save_to);
>
>                                 // Define allowed columns
>                                 $allowed_columns =
> array('domain','views','clicks','revenue','currency','date','park','account 
> ');
>                                 $re_indexed_data = array();
>                                 $data = 
> $objPHPExcel->getActiveSheet()->toArray();
>
>                                 // Get db connections since we are using two 
> different db's here
>                                 $connection_cdb = Propel::getConnection();
>                                 $connection_stats = 
> Propel::getConnection('cdb_stats');
>
>                                 // get domains
>                                 $domains_re_indexed = array();
>                                 $query = 'SELECT * FROM domains';
>                             $statement = $connection_cdb->prepare($query);
>                             $statement->execute();
>                             while ($dObj = $statement->fetch(PDO::FETCH_OBJ))
>                             {
>                                 $domains_re_indexed[$dObj->dn] =
> array('domain_id'=>$dObj->domain_ID, 'deal_id'=>$dObj->deal_id);
>                             }                          
>
>                                 try {
>                                         $validated_data = array();
>                                     $sfLogger = 
> sfContext::getInstance()->getLogger();
>
>                                         foreach($data as $row_number => $row) 
> {
>                                                 $batch_options = array();
>
>                                                 // Check its not an empty row
>                                                 if (!strlen(implode("", 
> $row))) {
>                                                         continue;
>                                                 }
>
>                                                 foreach($row as $col_number 
> => $col) {
>                                                         echo "<br>MEMORY: 
> ".memory_get_usage();
>                                                         if ($row_number == 1) 
> {
>                                                                 $col = 
> strtolower($col);
>                                                                 $key = 
> array_search($col, $allowed_columns);
>                                                                 if ($key !== 
> false) {
>                                                                         
> $data_indexes[$col_number] = $allowed_columns[$key];
>                                                                 }
>                                                         } else {
>                                                                 if 
> (isset($data_indexes[$col_number]) &&
> strlen($data_indexes[$col_number]) && strlen($col)) {
>                                                                         if 
> ($data_indexes[$col_number] == "date") {
>                                                                               
>   $col = date("Y-m-d", strtotime(str_replace("/", "-", $col)));
>                                                                         }
>                                                                         
> $batch_options[$data_indexes[$col_number]] = $col;
>                                                                 }
>                                                         }
>                                                 }
>
>                                                 if ($row_number > 1) {
>
>                                                         // Park info now 
> comes from the form
>                                                         if 
> (!isset($values['parking_program']) ||
> !strlen($values['parking_program'])) {
>                                                                 throw new 
> Exception('Missing or invalid parking program');
>                                                         } else {
>                                                                 
> $batch_options['aff_name'] =
> strtolower($re_indexed_parking_programs[$values['parking_program']]->getNam 
> e());
>                                                         }
>
>                                                         // Account info now 
> comes from the form
>                                                         if 
> (!isset($values['accounts']) || !strlen($values['accounts'])) {
>                                                                 throw new 
> Exception('Missing or invalid parking account');
>                                                         } else {
>                                                                 
> $batch_options['aff_user'] =
> strtolower($re_indexed_accounts_by_id[$values['accounts']]->getAffUser());
>                                                         }
>
>                                                         // Specify for batch 
> results to be returned as a serialized array
>                                                         $batch_results = 
> array();
>                                                         
> $batch_options['return_results'] = true;
>                                                         $batch_options['row'] 
> = $row_number;
>                                                         
> $batch_options['skip_merge'] = 1;
>
>                                                         $output = array();
>                                                         
> foreach($batch_options as $k=>$v) {
>                                                                 $output[] = 
> "$k:$v";
>                                                         }
>                                                         echo 
> "<br>".implode(", ", $output);
>                                                         flush();
>
>                                                         // Validate and set 
> data
>                                                         $c = new Criteria();
>
>                                                         
> $c->add(DailyStatsTempPeer::DN, $batch_options['domain']);
>                                                         
> $c->add(DailyStatsTempPeer::AFF_NAME, $batch_options['aff_name']);
>                                                         
> $c->add(DailyStatsTempPeer::AFF_USER, $batch_options['aff_user']);
>                                                         
> $c->add(DailyStatsTempPeer::VIEWS, $batch_options['views']);
>                                                         
> $c->add(DailyStatsTempPeer::CLICKS, $batch_options['clicks']);
>                                                         
> $c->add(DailyStatsTempPeer::REVENUE, $batch_options['revenue']);
>                                                         
> $c->add(DailyStatsTempPeer::STAT_DATE, $batch_options['date']);
>                                                         
> $c->add(DailyStatsTempPeer::STAT_CURRENCY, $batch_options['currency']);
>
>                                                         // Set other data 
> that needs to be added with the stats
>                                                         // ~ Set click rate
>                                                         
> $c->add(DailyStatsTempPeer::CLICK_RATE,
> ($c->getValue(DailyStatsTempPeer::VIEWS) ?
> $c->getValue(DailyStatsTempPeer::CLICKS)/$c->getValue(DailyStatsTempPeer::V 
> IEWS)
> : 0));
>                                                         // ~ Set revenue per 
> click
>                                                         
> $c->add(DailyStatsTempPeer::REVENUE_PER_CLICK,
> ($c->getValue(DailyStatsTempPeer::CLICKS) ?
> $c->getValue(DailyStatsTempPeer::REVENUE)/$c->getValue(DailyStatsTempPeer:: 
> CLICKS)
> : 0));
>                                                         // ~ Set data from 
> accounts table
>
>                                                         if 
> (isset($re_indexed_accounts[$c->getValue(DailyStatsTempPeer::AFF_NAME).$c-> 
> getValue(DailyStatsTempPeer::AFF_USER)]))
> {
>                                                                  $account =
> $re_indexed_accounts[$c->getValue(DailyStatsTempPeer::AFF_NAME).$c->getValu 
> e(DailyStatsTempPeer::AFF_USER)];
>                                                                  
> $c->add(DailyStatsTempPeer::BONUS, $account->getBonus());
>                                                                  
> $c->add(DailyStatsTempPeer::REV_SPLIT, $account->getRevSplit());
>                                                                  
> $c->add(DailyStatsTempPeer::COMPANY, $account->getCompany());
>                                                                  
> $c->add(DailyStatsTempPeer::ACCOUNT_ID, $account->getId());
>                                                         } else {
>                                                                  
> $sfLogger->err("{".basename(__file__)."} Account not found
> for Park: {$c->getValue(DailyStatsTempPeer::AFF_NAME)}
>                                                                  
> Account:{$c->getValue(DailyStatsTempPeer::AFF_USER)} on row
> $row_number");
>                                                                  throw new 
> Exception('Account not found for
> Park:'.$c->getValue(DailyStatsTempPeer::AFF_NAME).',
>                                                                  
> Account:'.$c->getValue(DailyStatsTempPeer::AFF_USER).' on row
> '.$row_number);
>                                                         }
>                                                         // ~ Set additional 
> colums data recently added
>                                                         if 
> (isset($domains_re_indexed[$batch_options['domain']])) {
>                                                                  $domain = 
> $domains_re_indexed[$batch_options['domain']];
>                                                                  
> $c->add(DailyStatsTempPeer::DOMAIN_ID, $domain['domain_id']);
>                                                                  
> $c->add(DailyStatsTempPeer::DEAL_ID, $domain['deal_id']);
>                                                         }
>
>                                                         if 
> ($batch_options['date'] == '1970-01-01' ||
> $batch_options['date'] == '1969-12-31') {
>                                                          
> $sfLogger->err("{".basename(__file__)."} Invalid date format:
> {$batch_options['date']} on row $row_number");
>                                                          throw new 
> Exception('Please change date format in excel file
> to dd/mm/yyyy');
>                                                         }
>
>                                                         
> $checkIfRecordExistsCriteria = new Criteria();
>                                                         
> $checkIfRecordExistsCriteria->add($c->getCriterion(DailyStatsTempPeer::STAT 
> _DATE));
>                                                         
> $checkIfRecordExistsCriteria->add($c->getCriterion(DailyStatsTempPeer::DN)) ;
>                                                         
> $checkIfRecordExistsCriteria->add($c->getCriterion(DailyStatsTempPeer::AFF_ 
> NAME));
>                                                         
> $checkIfRecordExistsCriteria->add($c->getCriterion(DailyStatsTempPeer::AFF_ 
> USER));
>
>                                                         // Set the daily stat 
> entree information to be used for logging
>                                                         
> $daily_stat_record_info =
> DailyStatsTempPeer::DN.":".$c->getValue(DailyStatsTempPeer::DN).", ".
>                                                         
> DailyStatsTempPeer::AFF_NAME.":".$c->getValue(DailyStatsTempPeer::AFF_NAME) 
> .",
> ".
>                                                         
> DailyStatsTempPeer::AFF_USER.":".$c->getValue(DailyStatsTempPeer::AFF_USER) 
> .",
> ".
>                                                         
> DailyStatsTempPeer::STAT_DATE.":".$c->getValue(DailyStatsTempPeer::STAT_DAT 
> E)."
> Row: $row_number";
>
>                                                         $affected_rows =
> DailyStatsTempPeer::doDelete($checkIfRecordExistsCriteria,
> $connection_stats);
>                                                         
> DailyStatsTempPeer::doInsert($c, $connection_stats);
>
>                                                         if ($affected_rows) {
>                                                                 
> $this->count_updated_records++;
>                                                         } else {
>                                                                 
> $this->count_inserted_records++;
>                                                         }
>
>                                                         
> DealsPeer::clearInstancePool();
>                                                         
> DailyStatsTempPeer::clearInstancePool();
>                                                         
> AccountsPeer::clearInstancePool();
>                                                         
> DomainsPeer::clearInstancePool();
>                                                         
> ParkingProgramPeer::clearInstancePool();
>                                                 }
>                                         }
>                                         
> sfBatchHelper::executeBatch('mergeDailyStatsTempToDailyStats', array());
>
>                                 } catch (Exception $e) {
>                                         $this->getUser()->setFlash('error', 
> var_export($e, true), false);
>                                 }
>                         }
>                 }
>                 // Remove the uploaded file
>                 if (isset($save_to) && strlen($save_to) && 
> file_exists($save_to)) {
>                         unlink($save_to);
>                 }
>                 $this->submited_bulk_stats = $submited_bulk_stats;
>         }
>
> Works fine with a couple of thousand rows... but its clear to see the
> memory going up
> Don't know what this will tell you that i haven't already
>
> On Mon, Apr 12, 2010 at 5:28 PM, Dennis Benkert
>
>
>
> <spinecras...@googlemail.com> wrote:
> > So, how big are these CSV files? How many lines are you processing and
> > can you tell us how many entries you're inserting to your DB using
> > Propel?
>
> > It would be best if you could show us the code that implements what
> > you described in your last mail. Investing maybe 30 minutes to write
> > an email that desribes the problem you have, what part of your code
> > suffers from it and the data you're using will most likely keep you
>
> ...
>
> read more »

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

To unsubscribe, reply using "remove me" as the subject.

Reply via email to