Here is the patch I just comitted which reduces the amount of RAM consumed.
[dan@ngaio:/usr/websites/freshports.org/classes] $ cvs di -ub display_commit.php
Index: display_commit.php
===================================================================
RCS file: /home/repositories/freshports-1/classes/display_commit.php,v
retrieving revision 1.8
diff -u -b -r1.8 display_commit.php
--- display_commit.php 10 Jul 2007 11:39:07 -0000 1.8
+++ display_commit.php 22 Oct 2007 17:22:23 -0000
@@ -87,19 +87,16 @@
$i=0;
$GlobalHideLastChange = "N";
- for ($i = 0; $i < $NumRows; $i++) {
- $myrow = pg_fetch_array($this->result, $i);
- $mycommit = new CommitRecord();
- $mycommit->PopulateValues($myrow);
- $commits[$i] = $mycommit;
- }
$LastDate = '';
$this->HTML = '';
unset($ThisCommitLogID);
for ($i = 0; $i < $NumRows; $i++) {
- $mycommit = $commits[$i];
+ $myrow = pg_fetch_array($this->result, $i);
+ unset($mycommit);
+ $mycommit = new CommitRecord();
+ $mycommit->PopulateValues($myrow);
$ThisCommitLogID = $mycommit->commit_log_id;
if ($LastDate <> $mycommit->commit_date) {
@@ -118,9 +115,12 @@
# count the number of ports in this commit
$NumberOfPortsInThisCommit = 0;
$MaxNumberPortsToShow = 10;
- while ($j < $NumRows && $commits[$j]->commit_log_id == $ThisCommitLogID) {
+ while ($j < $NumRows && $mycommit->commit_log_id == $ThisCommitLogID) {
$NumberOfPortsInThisCommit++;
- $mycommit = $commits[$j];
+ $myrow = pg_fetch_array($this->result, $j);
+ unset($mycommit);
+ $mycommit = new CommitRecord();
+ $mycommit->PopulateValues($myrow);
if ($NumberOfPortsInThisCommit == 1) {
GLOBAL $freshports_mail_archive;
@@ -283,6 +283,8 @@
$this->HTML .= "\n</BLOCKQUOTE>\n</TD></TR>\n\n\n";
}
+ unset($mycommit);
+
return $this->HTML;
}
}
[dan@ngaio:/usr/websites/freshports.org/classes] $
It’s rather simple. Instead of storing each result tuple in an array, I fetch them as required. Seems to work. :)











