optimise.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. //decode by http://dezend.qiling.org QQ 2859470
  3. define('CURSCRIPT', 'optimise');
  4. require_once dirname(__FILE__) . '/global.php';
  5. require_once MYMPS_INC . '/db.class.php';
  6. (!defined('IN_ADMIN') || !defined('IN_MYMPS')) && exit('Access Denied');
  7. $step = array(1 => '删除过期分类信息', 2 => '删除待审分类信息', 3 => '只保留最近两个月的会员登录记录', 4 => '删除无金币消费的会员消费记录', 5 => '删除支付失败的会员支付记录', 6 => '只保留' . $mymps_mymps[cfg_record_save] . '条短信发送记录', 7 => '只保留' . $mymps_mymps[cfg_record_save] . '条管理员登录记录', 8 => '只保留' . $mymps_mymps[cfg_record_save] . '条管理员操作记录', 9 => '删除会员已读短消息', 10 => '只保留一个月内的邮件发送记录', 11 => 'Mysql数据库表优化');
  8. $here = 'Mymps系统优化';
  9. if ($action == 'dopost') {
  10. $steporder = $steporder ? mhtmlspecialchars($steporder) : array();
  11. foreach ($steporder as $k => $v) {
  12. $next .= $v == 1 ? $k . ',' : '';
  13. }
  14. $next = $next ? $next : ',';
  15. } else {
  16. $next && !intval($next) && ($finished = 1);
  17. }
  18. include mymps_tpl(CURSCRIPT);
  19. if ($next) {
  20. $next = substr($next, 0, -1);
  21. $nextarr = explode(',', $next);
  22. $nextid = $nextarr[0];
  23. $last .= $nextid . ',';
  24. if (!$nextarr[0]) {
  25. $finished = 1;
  26. }
  27. unset($nextarr[0]);
  28. $next = implode(',', $nextarr);
  29. $next .= ',';
  30. switch ($nextid) {
  31. case '1':
  32. $where = ' WHERE endtime < \'' . $timestamp . '\' AND endtime != \'0\'';
  33. $query = $db->query('SELECT id FROM ' . $db_mymps . 'information ' . $where);
  34. while ($post = $db->fetchRow($query)) {
  35. $ids .= $post['id'] . ',';
  36. }
  37. $selectedids = substr($ids, 0, -1);
  38. if ($selectedids && $selectedids != ',') {
  39. $query = $db->query('SELECT * FROM `' . $db_mymps . 'information` WHERE id IN (' . $selectedids . ')');
  40. while ($row = $db->fetchRow($query)) {
  41. @unlink(MYMPS_ROOT . $row['html_path']);
  42. }
  43. mymps_delete('information', 'WHERE id IN(' . $selectedids . ')');
  44. $query = $db->query('SELECT * FROM `' . $db_mymps . 'info_img` WHERE infoid IN (' . $selectedids . ')');
  45. while ($row = $db->fetchRow($query)) {
  46. @unlink(MYMPS_ROOT . $row['imgpath']);
  47. @unlink(MYMPS_ROOT . $row['pre_imgpath']);
  48. }
  49. mymps_delete('info_img', 'WHERE infoid IN (' . $selectedids . ')');
  50. mymps_delete('comment', 'WHERE typeid IN (' . $selectedids . ') AND type = \'information\'');
  51. }
  52. break;
  53. case '2':
  54. $where = ' WHERE info_level = \'0\'';
  55. $query = $db->query('SELECT id FROM ' . $db_mymps . 'information ' . $where);
  56. while ($post = $db->fetchRow($query)) {
  57. $ids .= $post['id'] . ',';
  58. }
  59. $selectedids = substr($ids, 0, -1);
  60. if ($selectedids && $selectedids != ',') {
  61. $query = $db->query('SELECT * FROM `' . $db_mymps . 'information` WHERE id IN (' . $selectedids . ')');
  62. while ($row = $db->fetchRow($query)) {
  63. @unlink(MYMPS_ROOT . $row['html_path']);
  64. }
  65. mymps_delete('information', 'WHERE id IN(' . $selectedids . ')');
  66. $query = $db->query('SELECT * FROM `' . $db_mymps . 'info_img` WHERE infoid IN (' . $selectedids . ')');
  67. while ($row = $db->fetchRow($query)) {
  68. @unlink(MYMPS_ROOT . $row['imgpath']);
  69. @unlink(MYMPS_ROOT . $row['pre_imgpath']);
  70. }
  71. mymps_delete('info_img', 'WHERE infoid IN (' . $selectedids . ')');
  72. mymps_delete('comment', 'WHERE typeid IN (' . $selectedids . ') AND type = \'information\'');
  73. }
  74. break;
  75. case '3':
  76. $monthdate = strtotime('-2 month');
  77. $db->query('DELETE FROM `' . $db_mymps . 'member_record_login` WHERE pubdate < \'' . $monthdate . '\'');
  78. break;
  79. case '4':
  80. $db->query('DELETE FROM `' . $db_mymps . 'member_record_use` WHERE paycost = \'<font color=red>扣除金币 0 </font>\'');
  81. break;
  82. case '5':
  83. $db->query('DELETE FROM `' . $db_mymps . 'payrecord` WHERE paybz = \'等待支付\'');
  84. break;
  85. case '6':
  86. if (!$mymps_mymps['cfg_record_save']) {
  87. $mymps_mymps['cfg_record_save'] = 100;
  88. }
  89. $total_count = mymps_count('sms_sendlist');
  90. if ($mymps_mymps['cfg_record_save'] <= $total_count) {
  91. $delrecord = $db->getAll('SELECT id FROM `' . $db_mymps . 'sms_sendlist` ORDER BY ID DESC LIMIT 1,' . $mymps_mymps['cfg_record_save']);
  92. foreach ($delrecord as $k => $value) {
  93. $id .= $value[id] . ',';
  94. }
  95. $id = substr($id, 0, -1);
  96. mymps_delete('sms_sendlist', 'WHERE id NOT IN (' . $id . ')');
  97. }
  98. break;
  99. case '7':
  100. if (!$mymps_mymps['cfg_record_save']) {
  101. $mymps_mymps['cfg_record_save'] = 100;
  102. }
  103. $total_count = mymps_count('admin_record_login');
  104. if ($mymps_mymps['cfg_record_save'] <= $total_count) {
  105. $delrecord = $db->getAll('SELECT id FROM `' . $db_mymps . 'admin_record_login` ORDER BY ID DESC LIMIT 1,' . $mymps_mymps['cfg_record_save']);
  106. foreach ($delrecord as $k => $value) {
  107. $id .= $value[id] . ',';
  108. }
  109. $id = substr($id, 0, -1);
  110. mymps_delete('admin_record_login', 'WHERE id NOT IN (' . $id . ')');
  111. }
  112. break;
  113. case '8':
  114. if (!$mymps_mymps['cfg_record_save']) {
  115. $mymps_mymps['cfg_record_save'] = 100;
  116. }
  117. $total_count = mymps_count('admin_record_action');
  118. if ($mymps_mymps['cfg_record_save'] <= $total_count) {
  119. $delrecord = $db->getAll('SELECT id FROM `' . $db_mymps . 'admin_record_action` ORDER BY ID DESC LIMIT 1,' . $mymps_mymps['cfg_record_save']);
  120. foreach ($delrecord as $k => $value) {
  121. $id .= $value[id] . ',';
  122. }
  123. $id = substr($id, 0, -1);
  124. mymps_delete('admin_record_action', 'WHERE id NOT IN (' . $id . ')');
  125. }
  126. break;
  127. case '9':
  128. $db->query('DELETE FROM `' . $db_mymps . 'member_pm` WHERE if_read = \'1\'');
  129. break;
  130. case '10':
  131. $monthdate = strtotime('-1 month');
  132. $db->query('DELETE FROM `' . $db_mymps . 'mail_sendlist` WHERE last_send < \'' . $monthdate . '\' ');
  133. break;
  134. case '11':
  135. $query = $db->query('SHOW TABLE STATUS LIKE \'' . $db_mymps . '%\'', 'SILENT');
  136. while ($table = $db->fetchRow($query)) {
  137. $db->query('OPTIMIZE TABLE ' . $table['Name']);
  138. }
  139. break;
  140. }
  141. if ($finished != 1) {
  142. echo mymps_goto('?last=' . $last . '&next=' . $next);
  143. ob_flush();
  144. flush();
  145. sleep(1);
  146. } else {
  147. ob_end_flush();
  148. }
  149. }