PluginProbe ʕ •ᴥ•ʔ
Aruba HiSpeed Cache / trunk
Aruba HiSpeed Cache vtrunk
3.0.14 3.0.13 1.2.4 1.2.5 1.2.6 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.17 2.0.18 2.0.19 2.0.20 2.0.21 2.0.22 2.0.23 2.0.24 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 3.0.0 3.0.1 3.0.10 3.0.11 3.0.12 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3
aruba-hispeed-cache / src / AHSC_Dboptimization.php
aruba-hispeed-cache / src Last commit date
APC 3 months ago Events 3 months ago Purger 3 months ago assets 3 months ago AHSC_Apc.php 3 months ago AHSC_Check.php 3 months ago AHSC_Config.php 2 months ago AHSC_Dboptimization.php 3 months ago AHSC_Functions.php 2 months ago AHSC_HtmlOptimizer.php 3 months ago AHSC_Lazyload.php 1 week ago AHSC_Preconnect.php 3 months ago AHSC_Static.php 2 months ago AHSC_Version.php 3 months ago AHSC_Warmer.php 3 months ago AHSC_XmlRPC.php 3 months ago index.php 3 months ago
AHSC_Dboptimization.php
264 lines
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit;
4 }
5 $ahsc_tables=array();
6 $ahsc_tables['wp_postmeta']=array(
7 'meta_id_optimized'=>array(
8 'type'=>'UNIQUE KEY',
9 'param'=>array('meta_id')
10 ),
11 'post_id_optimized'=>array(
12 'type'=>'KEY',
13 'param'=>array('post_id', 'meta_key', 'meta_id')
14 ),
15 'meta_key_optimized'=>array(
16 'type'=>'KEY',
17 'param'=>array('post_id', 'meta_key')
18 )
19 );
20
21 $ahsc_tables['wp_usermeta']=array(
22 'umeta_id_optimized'=>array(
23 'type'=>'UNIQUE KEY',
24 'param'=>array('umeta_id')
25 ),
26 'user_id_optimized'=>array(
27 'type'=>'KEY',
28 'param'=>array('user_id', 'meta_key','umeta_id')
29 ),
30 'meta_key_optimized'=>array(
31 'type'=>'KEY',
32 'param'=>array( 'meta_key','user_id')
33 )
34 );
35
36 $ahsc_tables['wp_termmeta']=array(
37 'meta_id_optimized'=>array(
38 'type'=>'UNIQUE KEY',
39 'param'=>array('meta_id')
40 ),
41 'term_id_optimized'=>array(
42 'type'=>'KEY',
43 'param'=>array('term_id', 'meta_key', 'meta_id')
44 ),
45 'meta_key_optimized'=>array(
46 'type'=>'KEY',
47 'param'=>array('meta_key','term_id')
48 ),
49
50 );
51
52 $ahsc_tables['wp_options']=array(
53 'option_id_optimized'=>array(
54 'type'=>'UNIQUE KEY',
55 'param'=>array('option_id')
56 ),
57 'autolod_optimized'=>array(
58 'type'=>'KEY',
59 'param'=>array('autoload','option_id')
60 )
61 );
62
63 $ahsc_tables['wp_posts']=array(
64 'type_status_date_optimized'=>array(
65 'type'=>'KEY',
66 'param'=>array('post_type','post_status','post_date','post_author','ID')
67 ),
68 'post_author_optimized'=>array(
69 'type'=>'KEY',
70 'param'=>array('post_author','post_type','post_status','post_date','ID')
71 )
72 );
73 $ahsc_tables['wp_comments']=array(
74 'comment_post_parent_approved_optimized'=>array(
75 'type'=>'KEY',
76 'param'=>array('comment_post_ID','comment_parent','comment_approved','comment_ID')
77 )
78 );
79
80 /*CONTROLLO PER ESISTENZA UNIQUE KEY
81
82 SELECT EXISTS (SELECT constraint_name
83 FROM INFORMATION_SCHEMA.table_constraints
84 WHERE table_name = 'my_table' AND constraint_type='UNIQUE');
85 */
86 /*CONTROLLO PER ESISTENZA KEU
87 SELECT DISTINCT
88 INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS
89 WHERE INDEX_NAME = 'KEY_NAME'
90 and TABLE_NAME='TABLE_NAME'
91 */
92
93 function AHSC_DBOPT_Check(){
94 global $ahsc_tables,$wpdb;
95 $query_result=array();
96 $check=true;
97 foreach($ahsc_tables as $table_name=>$index_settings){
98 foreach($index_settings as $index_name=>$index_param){
99 $pfx=$wpdb->prefix.substr($table_name,'3',strlen($table_name));
100 $query_result[$pfx][$index_name]=AHSC_check_key_exists($index_name,$table_name);
101 }
102 }
103
104 foreach($query_result as $table=>$index){
105 foreach($index as $index_name=>$index_exist){
106 if($index_exist===0){
107 $check=false;
108 break;
109 }else{
110 continue;
111 }
112 }
113 }
114
115 /*echo "<pre> <p>===================================SQLCONTROLLO=====================================================</p>".
116 "<p>". var_export($query_result,true)."</p>".
117 "<p>CHECK RESULT: ".var_export($check,true)."</p>".
118 "<p>================================================================================================</p></pre>";*/
119 return $check;
120 }
121
122 //AHSC_DBOPT_Check();
123 // phpcs:disable
124 function AHSC_check_key_exists($index_name,$table_name){
125 global $wpdb;
126 $pfx=$wpdb->prefix.substr($table_name,'3',strlen($table_name));
127 $sql="SELECT DISTINCT INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE INDEX_NAME = '{$index_name}' and TABLE_NAME='{$pfx}'";
128 //$result=$wpdb->query( $wpdb->prepare("SELECT DISTINCT INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE INDEX_NAME=%s and TABLE_NAME=%s", array( $index_name, $pfx)) ); //@phpcs:ignore
129 $result=$wpdb->query($sql);
130 /*echo "<pre> <p>===================================SQLCONTROLLOESISTENZA=====================================================</p>".
131 "<p>index : $index_name table: $pfx </p>".
132 "<p>sql : $sql</p>".
133 "<p> SQL RESULT :".var_export($result,true)."<p>".
134 "<p> CHECK SINGLE RESULT :".var_export(($result!==0)?1:0,true)."</p>".
135 "<p>================================================================================================</p></pre>";*/
136 return ($result!==0)?1:0;
137 }
138 // phpcs:disable
139 function AHSC_DBOPT_manage($status){
140 $result=array("status"=>$status);
141 if($status!=="false"){
142 $result['action']="ottimizza";
143 $result+=AHSC_DBOPT_Optimize();
144 }else{
145 $result['action']="elimina";
146 $result+=AHSC_DBOPT_Drop_chenges();
147 }
148 return $result;
149 }
150
151 /* AGGIUNTA KEY
152
153 ALTER TABLE `ps_cart_rule` ADD KEY `id_customer` (`id_customer`,`active`,`date_to`);
154
155 */
156
157 /*AGGIUNTA UNQIUE
158
159 ALTER TABLE table_name ADD CONSTRAINT unique_name UNIQUE (field1, field2, ...);
160
161 */
162
163 function AHSC_DBOPT_Optimize(){
164 global $ahsc_tables,$wpdb;
165 $query_result=array();
166 foreach($ahsc_tables as $table_name=>$index_settings){
167 $pfx=$wpdb->prefix.substr($table_name,'3',strlen($table_name));
168 //$sql="ALTER TABLE {$pfx} ROW_FORMAT=DYNAMIC;";
169 $wpdb->query( $wpdb->prepare("ALTER TABLE %i ROW_FORMAT=DYNAMIC;",array( $pfx) ));//@phpcs:ignore
170 foreach($index_settings as $index_name=>$index_param){
171
172 //$str_param=implode(",",$index_param['param']);
173
174 //$query_result[$pfx][$index_name]=array();
175 $param_count=count($index_param['param'])-1;
176 //$query_result[$pfx][$index_name]['param:count']=$param_count;
177 $str_param="";
178 $prepare_arr=array();
179
180 array_push($prepare_arr,$pfx);
181 array_push($prepare_arr,$index_name);
182 foreach($index_param['param'] as $pos=>$val){
183 array_push($prepare_arr,$val);
184 }
185
186 $param_prepare_str="";
187 for($i=0;$i<=$param_count;$i++){
188 $param_prepare_str.="%i,";
189
190 }
191 $param_prepare_str=substr($param_prepare_str,0,strlen($param_prepare_str)-1);
192 //$query_result[$pfx][$index_name]['param:str']=$param_prepare_str;
193 //$query_result[$pfx][$index_name]['param:str:val']=$str_param;
194 $k_exs=AHSC_check_key_exists($index_name,$table_name);
195
196 /*switch ($index_param['type']) {
197 case "UNIQUE KEY":
198 $query_result[$pfx][$index_name]['sql']=$wpdb->prepare("ALTER TABLE %i ADD CONSTRAINT %i UNIQUE ($param_prepare_str)",$prepare_arr);
199 case "KEY":
200 $query_result[$pfx][$index_name]['sql']=$wpdb->prepare("ALTER TABLE %i ADD KEY %i ($param_prepare_str)",$prepare_arr);
201
202 }*/
203
204 if(!$k_exs){
205
206 switch ($index_param['type']){
207 case "UNIQUE KEY":
208 //$sql="ALTER TABLE {$pfx} ADD CONSTRAINT {$index_name} UNIQUE ({$str_param}) ";
209
210 $wpdb->query( $wpdb->prepare("ALTER TABLE %i ADD CONSTRAINT %i UNIQUE ($param_prepare_str)",$prepare_arr));//@phpcs:ignore
211 break;
212 case "KEY":
213 //$sql="ALTER TABLE {$pfx} ADD KEY {$index_name} ({$str_param})";
214
215 $wpdb->query( $wpdb->prepare("ALTER TABLE %i ADD KEY %i ($param_prepare_str)",$prepare_arr));//@phpcs:ignore
216 break;
217 }
218
219
220 }
221 }
222 }
223 /*echo "<pre><p>===================================AGGIUNTA=====================================================</p>".
224 var_export($query_result,true).
225 "<p>================================================================================================</p></pre>";*/
226 return $query_result;
227 }
228 //AHSC_DBOPT_Optimize();
229
230 /*CANCELLAZIONE
231 *
232 * ALTER TABLE `my_table` DROP KEY `name_of_my_key`
233 * ALTER TABLE table_name DROP INDEX unique_name,
234 **/
235 function AHSC_DBOPT_Drop_chenges(){
236 global $ahsc_tables,$wpdb;
237 $query_result=array();
238 foreach($ahsc_tables as $table_name=>$index_settings){
239 foreach($index_settings as $index_name=>$index_param){
240
241 //$str_param=implode(",",$index_param['param']);
242 $pfx=$wpdb->prefix.substr($table_name,'3',strlen($table_name));
243 switch ($index_param['type']){
244 case "UNIQUE KEY":
245 //$sql="ALTER TABLE {$pfx} DROP INDEX {$index_name}";
246
247 $wpdb->query( $wpdb->prepare("DROP INDEX %i ON %i;",array( $index_name,$pfx)));//@phpcs:ignore
248
249 break;
250 case "KEY":
251 //$sql="ALTER TABLE {$pfx} DROP KEY {$index_name}";
252 $wpdb->query( $wpdb->prepare("ALTER TABLE %i DROP KEY %i;",array( $pfx,$index_name)));//@phpcs:ignore
253 break;
254 }
255 //$query_result[$pfx][$index_name]=array();
256 //$query_result[$pfx][$index_name]['sql'] = $sql; //$wpdb->query( $sql );
257 //$query_result[$pfx][$index_name]['result'] = $wpdb->query( $sql );//@phpcs:ignore
258
259 }
260 }
261 //var_dump($query_result);
262 return $query_result;
263 }
264 //AHSC_DBOPT_Drop_chenges();