{"id":232771,"date":"2023-01-29T09:46:00","date_gmt":"2023-01-29T06:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232771"},"modified":"2023-01-29T09:46:31","modified_gmt":"2023-01-29T06:46:31","slug":"hur-man-staeller-in-ett-php-skript-i-crontab-foer-att-rensa-flera-wordpress-databas-paa-samma-server","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-staeller-in-ett-php-skript-i-crontab-foer-att-rensa-flera-wordpress-databas-paa-samma-server\/","title":{"rendered":"Hur man st\u00e4ller in ett PHP-skript i Crontab f\u00f6r att rensa flera WordPress (databas) p\u00e5 samma server?"},"content":{"rendered":"<p>Om du \u00e4r v\u00e4rd f\u00f6r m\u00e5nga wordpress-bloggar p\u00e5 samma server kan du g\u00f6ra detta enkelt med f\u00f6ljande PHP-skript. Jag har varit v\u00e4rd f\u00f6r 6 webbplatser p\u00e5 den ena <a href=\"https:\/\/helloacm.com\/the-ultimate-vps-from-quickhostuk\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS<\/a>, s\u00e5 ist\u00e4llet f\u00f6r att starta reng\u00f6ringsskriptet en efter en, kan jag bara l\u00e4gga det i <a href=\"https:\/\/helloacm.com\/crontab-generator-secure-fast-handy-tool-to-generate-the-crontab-lines\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a> s\u00e5 det \u00e4r l\u00e4ttare f\u00f6r mig.<\/p>\n<p>F\u00f6rst skulle du beh\u00f6va n\u00e5got liknande detta (beh\u00e4ndiga funktioner).<\/p>\n<pre><code>\u00a0 set_time_limit(600);\n\u00a0 mysql_connect(\"localhost\", \"user\", \"password\") or die(mysql_error());\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \n\u00a0 function run_query($query) {\n\u00a0 \u00a0 echo $query;\n\u00a0 \u00a0 mysql_query($query) or die(mysql_error());\n\u00a0 \u00a0 echo \" ***OK!*** n\";\n\u00a0 } \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/code><\/pre>\n<p>Set_time_limit <strong>(600)<\/strong> \u00e4r bara en f\u00f6rsiktighets\u00e5tg\u00e4rd ifall den h\u00e4nger sig (s\u00e5 att du s\u00e4kert kan l\u00e4gga den i <a href=\"https:\/\/helloacm.com\/crontab-generator-secure-fast-handy-tool-to-generate-the-crontab-lines\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a> ). Se till att ers\u00e4tta mysql-\u00e5tkomstinformationen. Funktionen <strong>run_query()<\/strong> kommer att skriva ut fr\u00e5gan och exekvera den, om n\u00e5got g\u00e5r fel kommer det \u00f6vergripande skriptet att avslutas.<\/p>\n<p>Nu, det h\u00e4r \u00e4r den b\u00e4sta delen, du kan s\u00e4tta ihop n\u00e5gra v\u00e4lk\u00e4nda och anv\u00e4nda SQL-fr\u00e5gor s\u00e5 att du kan k\u00f6ra alla p\u00e5 en g\u00e5ng.<\/p>\n<pre><code>\u00a0 function clean_wp($db_name, $table_prefix, $skipwp = false) {\n\u00a0 \u00a0 mysql_select_db($db_name);\n\u00a0\n\u00a0 \u00a0 echo \"Optimising $db_name... n\";\n\u00a0 \u00a0 \n\u00a0 \u00a0 if (!$skipwp) {\n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE `a`, `b`, `c` FROM `{$table_prefix}terms` AS `a` \n \u00a0 \u00a0 \u00a0 \u00a0LEFT JOIN `{$table_prefix}term_taxonomy` AS `c` ON `a`.`term_id` = `c`.`term_id` \n \u00a0 \u00a0 \u00a0 \u00a0LEFT JOIN `{$table_prefix}term_relationships` AS `b` ON `b`.`term_taxonomy_id` = `c`.`term_taxonomy_id` \n \u00a0 \u00a0 \u00a0 \u00a0WHERE `c`.`taxonomy` = 'post_tag' AND `c`.`count` = 0\";\n\u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE `a`, `b`, `c`\n \u00a0 \u00a0 \u00a0 \u00a0FROM `{$table_prefix}posts` as `a`\n \u00a0 \u00a0 \u00a0 \u00a0LEFT JOIN `{$table_prefix}term_relationships` as `b` ON (`a`. `ID` = `b`. `object_id`) \u00a0 \u00a0 \u00a0 \u00a0LEFT JOIN `{$table_prefix}postmeta` as `c` ON (`a`. `ID` = `c`. `post_id`) \u00a0 \u00a0 \u00a0 \u00a0WHERE `a`. `post_type` = 'revision' \n \u00a0 \u00a0 \u00a0\";\n\u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE FROM `{$table_prefix}commentmeta`\n \u00a0 \u00a0 \u00a0 \u00a0WHERE `comment_id` NOT IN (\u00a0 \u00a0 \u00a0 \u00a0 \u00a0SELECT `comment_id`\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0FROM `{$table_prefix}comments` \n \u00a0 \u00a0 \u00a0 \u00a0)\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE FROM `{$table_prefix}commentmeta` \n \u00a0 \u00a0 \u00a0 \u00a0WHERE `meta_key` LIKE \"%akismet%\"\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query); \u00a0\n\u00a0 \n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE FROM `{$table_prefix}comments` \n \u00a0 \u00a0 \u00a0 \u00a0WHERE `comment_approved` &lt;&gt; 1\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0DELETE FROM `{$table_prefix}posts` \n \u00a0 \u00a0 \u00a0 \u00a0WHERE `post_type` = \"revision\"\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \n\u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 }\n\u00a0\n\u00a0 \u00a0 $alletabellen = mysql_query(\"SHOW TABLES\");\n\u00a0\n\u00a0 \u00a0 while($tabel = mysql_fetch_assoc($alletabellen))\n\u00a0 \u00a0 {\n\u00a0 \u00a0 \u00a0 \u00a0 foreach ($tabel as $db =&gt; $tabelnaam) \n\u00a0 \u00a0 \u00a0 \u00a0 {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $query = \"REPAIR TABLE `$tabelnaam`\";\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $query = \"OPTIMIZE TABLE `$tabelnaam`\";\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 run_query($query);\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 }\n\u00a0 \u00a0 \n\u00a0 \u00a0 echo \" --- Done!!! ---\";\n\u00a0 }<\/code><\/pre>\n<p>Funktionen <strong>clean_wp<\/strong> tar 3 parametrar. Den f\u00f6rsta \u00e4r tabellnamnet (s\u00e5 att du kan skicka in olika tabeller f\u00f6r olika wordpress-bloggar). Den andra parametern anger wp-tabellprefixet och standardv\u00e4rdet ska vara wp_. Den tredje parametern anger om det finns en wordpress-blogg i den h\u00e4r tabellen, s\u00e5 du kan ignorera wordpress-relaterade st\u00e4dfr\u00e5gor och bara k\u00f6ra de allm\u00e4nna.<\/p>\n<p>SQL <a href=\"https:\/\/helloacm.com\/sql-coding-exercise-delete-duplicate-emails\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">-fr\u00e5gorna<\/a> \u00e4r f\u00f6r att rensa papperskorgen kommentarer, ej godk\u00e4nda kommentarer (var f\u00f6rsiktig med det), <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/krympa-wordpress-databasanvaendningen\/\" title=\"revisionerna\">revisionerna<\/a>. De allm\u00e4nna fr\u00e5gorna inkluderar optimering och reparation. S\u00e5 du borde kunna l\u00e4gga det enkelt i <a href=\"https:\/\/helloacm.com\/how-to-set-up-email-when-your-server-reboots-using-crontab-and-mail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hur man st\u00e4ller in ett PHP-skript i Crontab f\u00f6r att rensa flera WordPress (databas) p\u00e5 samma server?<\/p>\n","protected":false},"author":1,"featured_media":224680,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,807,724,868],"tags":[1173],"class_list":["post-232771","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=232771"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/232771\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224680"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=232771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=232771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=232771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}