{"id":232846,"date":"2023-01-29T10:16:00","date_gmt":"2023-01-29T07:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232846"},"modified":"2023-01-29T10:16:34","modified_gmt":"2023-01-29T07:16:34","slug":"comment-configurer-un-script-php-dans-crontab-pour-nettoyer-plusieurs-wordpress-base-de-donnees-sur-le-meme-serveur","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-configurer-un-script-php-dans-crontab-pour-nettoyer-plusieurs-wordpress-base-de-donnees-sur-le-meme-serveur\/","title":{"rendered":"Comment configurer un script PHP dans Crontab pour nettoyer plusieurs WordPress (base de donn\u00e9es) sur le m\u00eame serveur\u00a0?"},"content":{"rendered":"<p>Si vous h\u00e9bergez de nombreux blogs wordpress sur le m\u00eame serveur, vous pouvez le faire facilement \u00e0 l&rsquo;aide du script PHP suivant. J&rsquo;ai h\u00e9berg\u00e9 6 sites Web sur le m\u00eame <a href=\"https:\/\/helloacm.com\/the-ultimate-vps-from-quickhostuk\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS<\/a>, donc au lieu de lancer un script de nettoyage un par un, je peux simplement le mettre dans le <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> pour que ce soit plus facile pour moi.<\/p>\n<p>Tout d&rsquo;abord, vous auriez besoin de quelque chose comme \u00e7a (fonctions pratiques).<\/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>Le <strong>set_time_limit(600)<\/strong> est juste une pr\u00e9caution au cas o\u00f9 il se bloque (afin que vous puissiez le mettre en toute s\u00e9curit\u00e9 dans <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> ). Assurez-vous de remplacer les d\u00e9tails d&rsquo;acc\u00e8s mysql. La fonction <strong>run_query()<\/strong> imprimera la requ\u00eate et l&rsquo;ex\u00e9cutera, si quelque chose ne va pas, le script global se terminera.<\/p>\n<p>Maintenant, c&rsquo;est la meilleure partie, vous pouvez assembler des requ\u00eates SQL bien connues et utilis\u00e9es afin de pouvoir les ex\u00e9cuter toutes en m\u00eame temps.<\/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>La fonction <strong>clean_wp<\/strong> prend 3 param\u00e8tres. Le premier est le nom de la table (vous pouvez donc transmettre diff\u00e9rentes tables pour diff\u00e9rents blogs wordpress). Le deuxi\u00e8me param\u00e8tre sp\u00e9cifie le pr\u00e9fixe de la table wp et la valeur par d\u00e9faut doit \u00eatre wp_. Le troisi\u00e8me param\u00e8tre sp\u00e9cifie s&rsquo;il y a un blog wordpress dans ce tableau, vous pouvez donc ignorer les requ\u00eates de nettoyage li\u00e9es \u00e0 wordpress et n&rsquo;ex\u00e9cuter que les requ\u00eates g\u00e9n\u00e9rales.<\/p>\n<p>Les <a href=\"https:\/\/helloacm.com\/sql-coding-exercise-delete-duplicate-emails\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">requ\u00eates SQL<\/a> consistent \u00e0 nettoyer les commentaires de la corbeille, les commentaires non approuv\u00e9s (attention \u00e0 cela), les <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/reduire-lutilisation-de-la-base-de-donnees-wordpress\/\" title=\"r\u00e9visions\">r\u00e9visions<\/a>. Les requ\u00eates g\u00e9n\u00e9rales incluent l&rsquo;optimisation et la r\u00e9paration. Vous devriez donc pouvoir le mettre facilement dans le <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\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment configurer un script PHP dans Crontab pour nettoyer plusieurs WordPress (base de donn\u00e9es) sur le m\u00eame serveur\u00a0?<\/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":[893,717,832,801,841,862],"tags":[1167],"class_list":["post-232846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=232846"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224680"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=232846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=232846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=232846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}