function deleteOldRecords() { parent::deleteOldRecords(); // delete records in VISIT that are useless // (means when week AND month using these records are archived) if (($this->periodType === DB_ARCHIVES_PERIOD_MONTH || $this->periodType === DB_ARCHIVES_PERIOD_WEEK) && $this->state !== DB_ARCHIVES_TEMP) { // select all weeks and months begin and end $r = query("SELECT date1, date2, idsite, period, idarchives\n\t\t\t\t\t\tFROM " . T_ARCHIVES . "\n\t\t\t\t\t\tWHERE done = " . DB_ARCHIVES_DONE . "\n\t\t\t\t\t\t\tAND (period = " . DB_ARCHIVES_PERIOD_WEEK . "\n\t\t\t\t\t\t\t\tOR period = " . DB_ARCHIVES_PERIOD_MONTH . "\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t"); while ($l = mysql_fetch_assoc($r)) { // stock all dates between these two in an array $dateBetween = getDaysBetween($l['date1'], $l['date2']); //print($l['idarchives'] ."<br>"); //print( $l['date1'].",". $l['date2']." id=:". $l['idsite']." period=:". $l['period']." " ); //print_r($dateBetween); print("<br> which is ".sizeof($dateBetween)." elements <br><br>"); if (isset($flag[$l['idsite']][$l['period']][$l['date1']])) { $c = $flag[$l['idsite']][$l['period']][$l['date1']]; if (sizeof($c) < sizeof($dateBetween) && sizeof($dateBetween) >= 7) { $flag[$l['idsite']][$l['period']][$l['date1']] = $dateBetween; } } else { $flag[$l['idsite']][$l['period']][$l['date1']] = $dateBetween; } } //exit; foreach ($flag as $idsite => $a_idsite) { foreach ($a_idsite as $period => $a_period) { foreach ($a_period as $a_date) { foreach ($a_date as $d) { if (!isset($toCheck[$idsite][$d])) { $toCheck[$idsite][$d] = 1; } else { $toCheck[$idsite][$d]++; } } } } } //print("<pre>Apres sommes des dates <br>"); //print_r($toCheck); $deleted = 0; foreach ($toCheck as $idsite => $a_date) { foreach ($a_date as $date => $hits) { // for the days who have 2 hits (mean that weeks and month that contain // this day are archived) // delete these day records! if ($hits > 1) { $r = query("DELETE\n\t\t\t\t\t\t\t\t\tFROM " . T_VISIT . "\n\t\t\t\t\t\t\t\t\tWHERE server_date = '" . $date . "'\n\t\t\t\t\t\t\t\t\t\tAND idsite = {$idsite}\n\t\t\t\t\t\t\t\t\t\t"); $deleted += mysql_affected_rows(); } } } //print("rows deleted = $deleted"); if (time() % 3 == 0) { $r = query("OPTIMIZE TABLE " . T_VISIT); } } }
function deleteOldRecords() { parent::deleteOldRecords(); if ($this->date->get() != getDateFromTimestamp(time())) { if (version_compare(getMysqlVersion(), '4.0') != -1) { $r = query("DELETE \n\t\t\t\t\t\t\tFROM " . T_LINK_VP . ", " . T_LINK_VPV . "\n\t\t\t\t\t\t\tUSING " . T_VISIT . "\n\t\t\t\t\t\t\t\tLEFT JOIN " . T_LINK_VP . "\n\t\t\t\t\t\t\t\tUSING ( idvisit )\n\t\t\t\t\t\t\t\tLEFT JOIN " . T_LINK_VPV . "\n\t\t\t\t\t\t\t\tUSING ( idlink_vp )\n\t\t\t\t\t\t\tWHERE " . T_VISIT . ".server_date = '" . $this->date->get() . "'\n\t\t\t\t\t\t \t\tAND " . T_VISIT . ".idsite = " . $this->site->getId() . "\n\t\t\t\t\t\t "); } else { // delete link_vp records print "Your mysql version is less than 4.0, so this process will be very long \n\t\t\t\t(a big feature is not implemented in your 3.23 version). \n\t\t\t\t<br>You should use mysql 4.0 or mysql 4.1!<br>\n\t\t\t\t<br>Vous devriez utiliser mysql 4.0 ou supérieure pour plus de performances \n\t\t\t\t(une fonctionnalité très importante est manquante à votre version 3.23<br>"; // select all link_vp id $r = query("SELECT idlink_vp\n\t\t\t\t\t\t\tFROM " . T_VISIT . "\n\t\t\t\t\t\t\t\tLEFT JOIN " . T_LINK_VP . "\n\t\t\t\t\t\t\t\tUSING ( idvisit )\n\t\t\t\t\t\t\tWHERE " . T_VISIT . ".server_date = '" . $this->date->get() . "'\n\t\t\t\t\t\t \t\tAND " . T_VISIT . ".idsite = " . $this->site->getId() . "\n\t\t\t\t\t\t \t\t"); while ($l = mysql_fetch_row($r)) { if (!empty($l[0])) { $r2 = query("DELETE FROM " . T_LINK_VP . "\n\t\t\t\t\t\t\t\tWHERE idlink_vp = " . $l[0]); } } } $r3 = query("OPTIMIZE TABLE " . T_LINK_VP . ", " . T_LINK_VPV); } }