﻿{"id":1106,"date":"2012-06-25T20:45:48","date_gmt":"2012-06-25T18:45:48","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=1106"},"modified":"2013-09-29T18:15:39","modified_gmt":"2013-09-29T17:15:39","slug":"howto-creare-un-file-di-cache-in-php","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2012\/06\/howto-creare-un-file-di-cache-in-php\/","title":{"rendered":"HOWTO: Creare un file di cache in PHP"},"content":{"rendered":"<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1108 image\" title=\"cache_php\" alt=\"\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/06\/cache_php.png\" width=\"232\" height=\"264\" \/><\/p>\n<p style=\"text-align: justify;\">In questo sito, soprattutto nella homepage, sono presenti alcuni riquadri informativi, che mostrano automaticamente i post del blog pi\u00f9 recenti, i commenti pi\u00f9 recenti, gli ultimi video caricati su Youtube, l&#8217;ultima mia attivit\u00e0 in bici, e simili.<\/p>\n<p style=\"text-align: justify;\">Ogni volta che questi riquadri vengono caricati, in teoria, viene eseguito il codice che permette di mostrare quell&#8217;output. In realt\u00e0, per non dilatare i tempi di caricamento e sovraccaricare il sito, \u00e8 pi\u00f9 comodo creare dei file di CACHE, che ci permetteranno di conservare l&#8217;output gi\u00e0 elaborato, per un certo numero di ore a nostro piacere.<\/p>\n<p style=\"text-align: justify;\">In questo modo, per un ristretto lasso di tempo, verr\u00e0 caricato l&#8217;output senza dover compiere lunghe operazioni in PHP\/JSON\/XML, o quanto altro serva allo scopo.<!--more--><\/p>\n<p style=\"text-align: justify;\">Questo \u00e8 il modello che utilizzo di solito:<\/p>\n<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:php\">&lt;?\r\n$expiretime=300;     \t \/\/ cache expire time in minutes\r\n$cachename=\"file.cache\"; \/\/name of the cachefile\r\n\r\n\/\/create the cachefile if it doesn't exist\r\nif (!file_exists($cachename)) {\r\n     $create = fopen($cachename, 'w');\r\n \t chmod (\"$cachename\", 0644); \/\/set chmod 644\r\n\t fclose($create);\r\n}\r\n\r\n\/\/ Is the file older than $expiretime, or the file is new\/empty?\r\n$FileAge = time() - filectime($cachename);\t\/\/ Calculate file age in seconds\r\nif ($FileAge &gt; ($expiretime * 60) || 0 == filesize($cachename))\r\n{\r\n\t\/\/do something [...]\r\n\t\/\/[...]\r\n\r\n\t\/\/ Now refresh the cachefile with newer content\r\n\r\n\t$output = \/\/youroutput;\r\n\r\n\t$handle = fopen($cachename, 'wb');\r\n\tfwrite($handle, $output);\t\t\t\r\n}\r\n\r\n\/\/cachefile is fresh enough... outputting data\r\n$data=file_get_contents($cachename);\r\necho $data;\r\n?&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span>\n<p style=\"text-align: justify;\">In $expiretime si imposta il numero di minuti entro cui si dovr\u00e0 utilizzare il file di cache, e dopo cui si proceder\u00e0 ad aggiornarla.<br \/>\nHo lasciato i commenti in inglese, per permettere un uso pi\u00f9 vasto di questo script.<\/p>\n<p>Qualsiasi operazione di parsing, o quanto altro che serve per produrre l&#8217;output, va inserito dove ho scritto &#8220;\/\/do something&#8221;.<\/p>\n<p>La riga:<br \/>\n<span class=\"no_translate\"><\/span><\/p>\n<blockquote><p><span class=\"no_translate\">write($handle, $output);<\/span><\/p><\/blockquote>\n<p><span class=\"no_translate\"><\/span><br \/>\nandr\u00e0 a scrivere il contenuto di $output nel file di cache.<\/p>\n<p style=\"text-align: justify;\">E&#8217;uno script che ho scritto un bel po&#8217; di tempo fa, ma risulta sempre utile&#8230;<\/p>\n<p style=\"text-align: justify;\">Qualsiasi commento \u00e8 il benvenuto!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo sito, soprattutto nella homepage, sono presenti alcuni riquadri informativi, che mostrano automaticamente i post del blog pi\u00f9 recenti, i commenti pi\u00f9 recenti, gli ultim video caricati su Youtube, l&#8217;ultima mia attivit\u00e0 in bici, e simili.[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[200,24,14,15],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1106"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=1106"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1106\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=1106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=1106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=1106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}