{"id":232801,"date":"2023-01-29T09:57:00","date_gmt":"2023-01-29T06:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232801"},"modified":"2023-01-29T10:06:27","modified_gmt":"2023-01-29T07:06:27","slug":"jak-skonfigurowac-skrypt-php-w-crontab-aby-wyczyscic-wiele-wordpress-baza-danych-na-tym-samym-serwerze","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-skonfigurowac-skrypt-php-w-crontab-aby-wyczyscic-wiele-wordpress-baza-danych-na-tym-samym-serwerze\/","title":{"rendered":"Jak skonfigurowa\u0107 skrypt PHP w Crontab, aby wyczy\u015bci\u0107 wiele WordPress (baza danych) na tym samym serwerze?"},"content":{"rendered":"<p>Je\u015bli hostujesz wiele blog\u00f3w WordPress na tym samym serwerze, mo\u017cesz to \u0142atwo zrobi\u0107 za pomoc\u0105 nast\u0119puj\u0105cego skryptu PHP. Hostowa\u0142em 6 stron internetowych na jednym <a href=\"https:\/\/helloacm.com\/the-ultimate-vps-from-quickhostuk\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS<\/a>, wi\u0119c zamiast uruchamia\u0107 skrypt czyszcz\u0105cy jeden po drugim, mog\u0119 po prostu umie\u015bci\u0107 to w <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>, aby by\u0142o mi \u0142atwiej.<\/p>\n<p>Najpierw potrzebujesz czego\u015b takiego (funkcje przydatne).<\/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> to tylko \u015brodek ostro\u017cno\u015bci na wypadek, gdyby si\u0119 zawiesi\u0142 (aby\u015b m\u00f3g\u0142 bezpiecznie umie\u015bci\u0107 to w <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> ). Pami\u0119taj, aby wymieni\u0107 dane dost\u0119pu do mysql. Funkcja <strong>run_query()<\/strong> wypisze zapytanie i wykona je, je\u015bli co\u015b p\u00f3jdzie nie tak, ca\u0142y skrypt zako\u0144czy dzia\u0142anie.<\/p>\n<p>Teraz jest to najlepsza cz\u0119\u015b\u0107, mo\u017cesz po\u0142\u0105czy\u0107 kilka dobrze znanych i u\u017cywanych zapyta\u0144 SQL, aby m\u00f3c wykona\u0107 wszystkie na raz.<\/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>Funkcja <strong>clean_wp<\/strong> przyjmuje 3 parametry. Pierwszym z nich jest nazwa tabeli (dzi\u0119ki czemu mo\u017cesz podawa\u0107 r\u00f3\u017cne tabele dla r\u00f3\u017cnych blog\u00f3w wordpress). Drugi parametr okre\u015bla prefiks tabeli wp, a warto\u015bci\u0105 domy\u015bln\u0105 powinno by\u0107 wp_. Trzeci parametr okre\u015bla, czy w tej tabeli znajduje si\u0119 blog wordpress, wi\u0119c mo\u017cesz zignorowa\u0107 zapytania czyszcz\u0105ce zwi\u0105zane z wordpressem i wykonywa\u0107 tylko te og\u00f3lne.<\/p>\n<p>Zapytania <a href=\"https:\/\/helloacm.com\/sql-coding-exercise-delete-duplicate-emails\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SQL<\/a> s\u0142u\u017c\u0105 do wyczyszczenia komentarzy z kosza, niezatwierdzonych komentarzy (uwaga na to), <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/zmniejsz-wykorzystanie-bazy-danych-wordpress\/\" title=\"poprawek\">poprawek<\/a>. Pytania og\u00f3lne obejmuj\u0105 optymalizacj\u0119 i napraw\u0119. Wi\u0119c powiniene\u015b by\u0107 w stanie \u0142atwo umie\u015bci\u0107 to w <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\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak skonfigurowa\u0107 skrypt PHP w Crontab, aby wyczy\u015bci\u0107 wiele WordPress (baza danych) na tym samym serwerze?<\/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":[721,897,805,836,845,866],"tags":[1169],"class_list":["post-232801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=232801"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232801\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224680"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=232801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=232801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=232801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}