Hey Guys,
OK, so I am bringing this back up for another reason. Same data, same
problem, different situation.
I have a subset of the 1.4M records. 24,000 records roughly. One of
these fields is a 9 digit code. Which is really 3 codes in one.
111222333 would be 3 codes 111, 222, 333 I need to create a map
table between what these codes represent and the model for this data.
The problem is when I get to 9750 inserts into the table the script
errors out with a memory problem. I'm releasing all my memory in the
script and would expect symfony/propel to be able to handle this.
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 7420 bytes) in /usr/share/pear/symfony/vendor/
propel/util/BasePeer.php on line 444
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried
to allocate 7420 bytes) in /usr/share/pear/symfony/vendor/propel/util/
BasePeer.php on line 444
Now I know I could get around this by using straight php, but I would
like to use the tools the symfony provides with the data models to
keep continuity straight. This isn't going to be the only data I need
to manipulate, so I can see this being a major pain.
I've included the code below. I am using Symfony 1.0.10
Ideas?
Thanks,
James
======================================================================
$countStart = 0;
$countEnd = 23334;
while($countStart != $countEnd)
{
query
// batch process here
$c = new Criteria();
$c->setLimit(1);
$c->setOffset($countStart++);
$dataModel = DataModelPeer::doSelect($c);
$actCodes = array();
$actCodes[] = substr($dataMode[0]->getActCode(),0,3);
$actCodes[] = substr($dataMode[0]->getActCode(),3,3);
$actCodes[] = substr($dataMode[0]->getActCode(),6,3);
foreach($actCodes as $actCode){
$c2 = new Criteria();
$c2->add(MelissaActcodePeer::CODE, $actCode);
$ntee = MelissaActcodePeer::doSelect($c2);
if(count($ntee)){
$map = new ModelDataMelissaActcodeMap();
$map->setModelDataId($dataMode[0]->getId());
$map->setMelissaActcodeId($ntee[0]->getId());
$map->save();
$map=null;
}
}
unset($c);
unset($c2);
unset($dataModel);
unset($ntee);
unset($map);
unset($actCodes);
}
On Dec 17, 2007, at 4:20 AM, James wrote:
> Hi,
>
> It's me again. v1.0.8
>
> The whole reason I started playing with Symfony was for work. I've
> made a personal app to get familiar with Symfony and tonight I
> decided to take it to the work level. We have a database table with
> 1.4M records. We want to index these records in order to do a
> search on them. I was following the askeet example modified for our
> data set I got it to work adding weighs on the words in the company
> names, but hit an error where I ran out of memory. This was not
> very surprising. 1.4M records is a lot of data.
>
> I figured that the best possible way to handle this would be to go
> through each record on at a time. It may take a little while to
> run, but I knew that one record was within the memory limits.
> Here's my code the rest is quite literally out of the askeet
> example except it's not in an object it's simply functions in the
> batch script.
>
> $countStart=0;
> $countEnd=1400000;
>
> while($countStart != $countEnd){
>
> // batch process here
> $c = new Criteria();
> $c->setLimit(1);
> $c->setOffset($countStart++);
> $company = CompanyPeer::doSelect($c);
>
> $companyName = $company[0]->getCompany();
> $companyId = $company[0]->getId();
>
> $companyNameText = str_repeat(" ".$companyName, 2);
>
> $stemmed = stemPhrase($companyNameText);
>
> $words = array_count_values($stemmed);
>
> updateSearchIndex($companyId,$words);
>
> // Point everything at null.
> $c = null;
> $company = null;
> $companyName = null;
> $companyId = null;
> $componyNameText = null;
> $stemmed = null;
> $words = null;
>
> }
>
> When I run this code It does what it is suppose too up to about
> 19000 lines. Then it dumps and says that it ran out of memory
> again. My question is basically how can I work with so many records
> in Symfony without running out of memory, and without increasing how
> much memory php is allowed to use. A similar method worked for me
> in php, so I am wondering what I may be missing.
>
> Thanks,
> James
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---