{"id":232802,"date":"2023-01-29T10:16:00","date_gmt":"2023-01-29T07:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232802"},"modified":"2023-01-29T10:16:26","modified_gmt":"2023-01-29T07:16:26","slug":"como-configurar-um-script-php-no-crontab-para-limpar-varios-wordpress-banco-de-dados-no-mesmo-servidor","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-configurar-um-script-php-no-crontab-para-limpar-varios-wordpress-banco-de-dados-no-mesmo-servidor\/","title":{"rendered":"Como configurar um script PHP no Crontab para limpar v\u00e1rios WordPress (banco de dados) no mesmo servidor?"},"content":{"rendered":"<p>Se voc\u00ea hospedar muitos blogs wordpress no mesmo servidor, poder\u00e1 fazer isso facilmente com o seguinte script PHP. Eu hospedei 6 sites em um <a href=\"https:\/\/helloacm.com\/the-ultimate-vps-from-quickhostuk\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS<\/a>, ent\u00e3o ao inv\u00e9s de iniciar o script de limpeza um por um, eu posso simplesmente colocar isso no <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> para que seja mais f\u00e1cil para mim.<\/p>\n<p>Primeiro, voc\u00ea precisaria de algo assim (fun\u00e7\u00f5es \u00fateis).<\/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>O <strong>set_time_limit(600)<\/strong> \u00e9 apenas uma precau\u00e7\u00e3o no caso de travar (para que voc\u00ea possa coloc\u00e1-lo com seguran\u00e7a no <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> ). Certifique-se de substituir os detalhes de acesso do mysql. A fun\u00e7\u00e3o <strong>run_query()<\/strong> imprimir\u00e1 a consulta e a executar\u00e1, se algo der errado, o script geral ser\u00e1 encerrado.<\/p>\n<p>Agora, esta \u00e9 a melhor parte, voc\u00ea pode juntar algumas consultas SQL conhecidas e usadas para que voc\u00ea possa executar tudo de uma vez.<\/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>A fun\u00e7\u00e3o <strong>clean_wp<\/strong> recebe 3 par\u00e2metros. O primeiro \u00e9 o nome da tabela (assim voc\u00ea pode passar em tabelas diferentes para blogs wordpress diferentes). O segundo par\u00e2metro especifica o prefixo da tabela wp e o padr\u00e3o deve ser wp_. O terceiro par\u00e2metro especifica se h\u00e1 um blog wordpress nesta tabela, para que voc\u00ea possa ignorar as consultas de limpeza relacionadas ao wordpress e executar apenas as gerais.<\/p>\n<p>As <a href=\"https:\/\/helloacm.com\/sql-coding-exercise-delete-duplicate-emails\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">consultas SQL<\/a> s\u00e3o para limpar os coment\u00e1rios da lixeira, coment\u00e1rios n\u00e3o aprovados (cuidado com isso), as <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/reduza-o-uso-do-banco-de-dados-do-wordpress\/\" title=\"revis\u00f5es\">revis\u00f5es<\/a>. As consultas gerais incluem a otimiza\u00e7\u00e3o e o reparo. Ent\u00e3o voc\u00ea deve ser capaz de colocar isso facilmente no <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\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como configurar um script PHP no Crontab para limpar v\u00e1rios WordPress (banco de dados) no mesmo servidor?<\/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":[898,722,837,806,846,867],"tags":[1170],"class_list":["post-232802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232802"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232802\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224680"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}