{"id":232811,"date":"2023-01-29T17:23:00","date_gmt":"2023-01-29T14:23:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232811"},"modified":"2023-02-10T16:16:20","modified_gmt":"2023-02-10T13:16:20","slug":"kuinka-elvyttaeae-vanhoja-viestejae-php-n-ja-crontabin-wordpress-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-elvyttaeae-vanhoja-viestejae-php-n-ja-crontabin-wordpress-avulla\/","title":{"rendered":"Kuinka elvytt\u00e4\u00e4 vanhoja viestej\u00e4 PHP:n ja Crontabin (WordPress) avulla"},"content":{"rendered":"\n<p>Oletetaan, ett\u00e4 blogissasi on melkoinen m\u00e4\u00e4r\u00e4 kunnollisia julkaisuja ja mietit, onko olemassa tapa julkaista twitteriin\/facebookiin (tai muihin sosiaalisiin verkostoihin) automaattisesti ja s\u00e4\u00e4nn\u00f6llisesti.<\/p>\n<p>T\u00e4m\u00e4 ei ole vaikeaa. Vaikka t\u00e4m\u00e4 viesti opastaa sinua l\u00e4hett\u00e4m\u00e4\u00e4n Twitteriin, mutta periaate on samanlainen muissa sosiaalisissa verkostoissa. <a href=\"https:\/\/helloacm.com\/php-function-to-post-to-twitter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">T\u00e4m\u00e4 viesti<\/a> esittelee PHP-toiminnon l\u00e4hett\u00e4\u00e4ksesi Twitteriin.<\/p>\n<p>Emme halua julkaista samaa sis\u00e4lt\u00f6\u00e4\/artikkeleita uudestaan \u200b\u200bja uudestaan \u200b\u200blyhyen ajan sis\u00e4ll\u00e4. Siksi meid\u00e4n on luotava SQL-taulukko, joka tallentaa uudelleen julkaistujen viestien historian.<\/p>\n<pre><code>--\n-- Table structure for table `twitter`\n--\n\nCREATE TABLE IF NOT EXISTS `twitter` (`id` bigint(32) unsigned NOT NULL,\n  `url` varchar(255) NOT NULL,\n  `posttime` datetime NOT NULL) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;<\/code><\/pre>\n<p>Taulukossa on kolme kentt\u00e4\u00e4, joista yksi on ensisijainen avain (automaattinen lis\u00e4ys), toinen kentt\u00e4 on URL-osoite, joka on julkaistu uudelleen, ja kolmas on p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 ja aika.<\/p>\n<p>Kaikki kent\u00e4t tulee indeksoida oikein.<\/p>\n<pre><code>ALTER TABLE `twitter`\n ADD PRIMARY KEY (`id`), ADD KEY `url` (`url`,`posttime`), ADD KEY `posttime` (`posttime`);<\/code><\/pre>\n<p>Nyt, jos sinulla on wordpress, sinun on kysytt\u00e4v\u00e4 kelvollisia viestej\u00e4 ja valittava satunnaisesti yksi.<\/p>\n<pre><code>\u00a0 \/\/ database constants\n\u00a0 require('db.php');\n\u00a0 \/\/ twitter function\n\u00a0 require('twitter.php');\n\u00a0 mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());\n\u00a0 mysql_select_db(DB_NAME);\n\u00a0 $today = date(\"Y-m-d h:i:s\");\n\u00a0 \/\/ get total number of valid posts\n\u00a0 $query = \"\n \u00a0 \u00a0 \u00a0select \n \u00a0 \u00a0 \u00a0 \u00a0count(1)\n \u00a0 \u00a0 \u00a0from \n \u00a0 \u00a0 \u00a0 \u00a0`wp_posts`\n \u00a0 \u00a0 \u00a0where \n \u00a0 \u00a0 \u00a0 \u00a0(`post_type` = 'page' or `post_type` = 'post') and \n \u00a0 \u00a0 \u00a0 \u00a0(`post_status` = 'publish')\n \u00a0\";\n\u00a0 $result = mysql_query($query) or die(mysql_error());\n\u00a0 $total = mysql_result($result, 0, 0);\n\u00a0 $cnt = 0;\n\u00a0 if ($total &gt; 0) {\n\u00a0 \u00a0 while (1) {\n\u00a0 \u00a0 \u00a0 \/\/ pick a random npost\n\u00a0 \u00a0 \u00a0 $idx = mt_rand(0, $total - 1);\n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0select \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`post_name`, `post_title` \n \u00a0 \u00a0 \u00a0 \u00a0from \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`wp_posts`\n \u00a0 \u00a0 \u00a0 \u00a0where \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0(`post_type` = 'page' or `post_type` = 'post') and \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0(`post_status` = 'publish')\n \u00a0 \u00a0 \u00a0 \u00a0limit $idx, 1\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 $result = mysql_query($query) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 $row = mysql_fetch_array($result);\n\u00a0 \u00a0 \u00a0 \/\/ post URL\n\u00a0 \u00a0 \u00a0 $url = \"&lt;a class=\"vglnk\" target=\"_blank\" href=\"http:\/\/www.codingforspeed.com\/\".$row['post_name'].\"\/\" rel=\"nofollow\"&gt;&lt;span&gt;http&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;www&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;codingforspeed&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/\".$&lt;\/span&gt;&lt;span&gt;row&lt;\/span&gt;&lt;span&gt;['&lt;\/span&gt;&lt;span&gt;post&lt;\/span&gt;&lt;span&gt;_&lt;\/span&gt;&lt;span&gt;name&lt;\/span&gt;&lt;span&gt;'].\"\/&lt;\/span&gt;&lt;\/a&gt;\";\n\u00a0 \u00a0 \u00a0 $title = $row['post_title'];\n\u00a0 \u00a0 \u00a0 $query2 = \"select date(`posttime`) from `twitter` where `url` = '$url' order by `posttime` desc limit 1\";\n\u00a0 \u00a0 \u00a0 $result2 = mysql_query($query2) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 if (mysql_num_rows($result2) &gt; 0) {\n\u00a0 \u00a0 \u00a0 \u00a0 $last = mysql_result($result2, 0, 0);\n\u00a0 \u00a0 \u00a0 \u00a0 \/\/ last reposted date\/time\n\u00a0 \u00a0 \u00a0 \u00a0 $diff = abs((strtotime($today) - strtotime($last)) \/ 24 \/ 3600);\n\u00a0 \u00a0 \u00a0 \u00a0 if ($diff &lt;= 90) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $cnt ++;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if ($cnt &gt; 16) { \/\/ max retry time to avoid endless loop\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break;\u00a0 \n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; \/\/ try next random post\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \/\/ record the post in the table\n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0insert into `twitter`\n \u00a0 \u00a0 \u00a0 \u00a0set \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`url` = '$url',\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`posttime` = '$today'\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 mysql_query($query) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 $msg = \"#Repost \".$title;\n\u00a0 \u00a0 \u00a0 echo \"$msg $url\";\n\u00a0 \u00a0 \u00a0 postTwitter($msg, $url);\n\u00a0 \u00a0 \u00a0 break;\n\u00a0 \u00a0 }\n\u00a0 }<\/code><\/pre>\n<p>Ajatuksena t\u00e4ss\u00e4 on saada satunnainen viesti ja tarkistaa, onko se postitettu uudelleen viimeisen 90 p\u00e4iv\u00e4n aikana (muokkaa tarvittaessa), jos ei, postita se ja tallenna se tietokantaan. Muussa tapauksessa kokeile seuraavia satunnaisia \u200b\u200bviestej\u00e4, kunnes olet yritt\u00e4nyt muutaman kerran. Jos t\u00e4llaisia \u200b\u200b&quot;kelvollisia&quot; viestej\u00e4 ei l\u00f6ydy (esim. ei uusia artikkeleita pitk\u00e4\u00e4n aikaan), se havaitsee t\u00e4m\u00e4n ja hylk\u00e4\u00e4 silmukan.<\/p>\n<p>Tarkista my\u00f6s t\u00e4m\u00e4 <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/lisaeae-seuraava-satunnainen-viesti-wordpress-sivumalliin-sql-n-avulla\/\" title=\"viesti\">viesti<\/a> saadaksesi satunnaisen rivin SQL:n avulla.<\/p>\n<p>Seuraava asia on testata se kunnolla ja laittaa se <strong><a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontabiin<\/a><\/strong> esim. kerran p\u00e4iv\u00e4ss\u00e4.<\/p>\n<pre><code>0 8 * * * php \/home\/justyy.lai\/auto.php &gt; \/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>Viestien l\u00e4hett\u00e4minen twitteriin on muokattavissa ja lis\u00e4sin hash-tunnisteen &quot;#Repost&quot; erottaakseni muista normaaleista viesteist\u00e4. Linkit\u00e4n my\u00f6s twitter-tilini Facebook-sivulle, jotta aina kun twiitit julkaistaan \u200b\u200bTwitteriss\u00e4, Facebook-sivulla tila on my\u00f6s synkronoitu, mik\u00e4 on minulle paljon helpompaa.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kuinka elvytt\u00e4\u00e4 vanhat viestit PHP:n ja Crontabin avulla<\/p>\n","protected":false},"author":1,"featured_media":220869,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[677,895,834,843,803,995,864],"tags":[1166],"class_list":["post-232811","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggaamaan","category-koodi","category-opas-aloittelijoille","category-opetusohjelmia","category-php-5","category-sisaltomarkkinointi","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=232811"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232811\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/220869"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=232811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=232811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=232811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}