[phpOpenTracker-devel] [Bug #5054] DB_mysql_merge driver woes with PHP-5.1.0RC2-dev

[email protected] Tue, 13 Sep 2005 10:52:54 +0300 (EEST)
Newsgroups gmane.comp.web.phpopentracker.devel
Message-ID <[email protected]>
Bug #5054, was updated on 2005-Sep-13 10:52
Here is a current snapshot of the bug.

Project: phpOpenTracker
Category: None
Status: Open
Resolution: None
Bug Group: None
Priority: 5
Submitted by: tuupola
Assigned to : none
Summary: DB_mysql_merge driver woes with PHP-5.1.0RC2-dev

Details: When clicking a month simple_report monthly statistics something goes into forever lasting loop and Apache starts to consume all memory. Bumbing up debug level reveals this:

-cut-
Warning: date() expects parameter 2 to be long, string given in /export/www/www.loisto.info/EGOCVS/RAY/Loisto/phpOpenTracker/DB/mysql_merge.php on line 491

Warning: date() expects parameter 2 to be long, string given in /export/www/www.loisto.info/EGOCVS/RAY/Loisto/phpOpenTracker/DB/mysql_merge.php on line 492

Warning: date() expects parameter 2 to be long, string given in /export/www/www.loisto.info/EGOCVS/RAY/Loisto/phpOpenTracker/DB/mysql_merge.php on line 493
-cut-

Without digging any deeper the following patch fixes the problem. However I do not know if this is The Correct Way To Do It (TM):

-cut-
>diff -u mysql_merge.php mysql_merge.php.org
--- mysql_merge.php     2005-09-13 10:48:57.806210000 +0300
+++ mysql_merge.php.org 2005-09-13 10:41:03.567698000 +0300
@@ -485,12 +485,12 @@
     $accesslogTables = array();
     $visitorsTables  = array();

-    $startDay   = $day   = date('d', (integer)$parsedQuery[$between + 1]);
-    $startMonth = $month = date('m', (integer)$parsedQuery[$between + 1]);
-    $startYear  = $year  = date('Y', (integer)$parsedQuery[$between + 1]);
-    $endDay              = date('d', (integer)$parsedQuery[$between + 3]);
-    $endMonth            = date('m', (integer)$parsedQuery[$between + 3]);
-    $endYear             = date('Y', (integer)$parsedQuery[$between + 3]);
+    $startDay   = $day   = date('d', $parsedQuery[$between + 1]);
+    $startMonth = $month = date('m', $parsedQuery[$between + 1]);
+    $startYear  = $year  = date('Y', $parsedQuery[$between + 1]);
+    $endDay              = date('d', $parsedQuery[$between + 3]);
+    $endMonth            = date('m', $parsedQuery[$between + 3]);
+    $endYear             = date('Y', $parsedQuery[$between + 3]);

     $done                  = false;
     $numDaysInCurrentMonth = $this->_numDaysInMonth($month, $year);
-cut-



For detailed info, follow this link:
http://developer.berlios.de/bugs/?func=detailbug&bug_id=5054&group_id=2025