




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iCircle &#187; PHP</title>
	<atom:link href="http://www.icircle.it/category/web/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.icircle.it</link>
	<description>Informazione e curiosità dal web</description>
	<lastBuildDate>Fri, 20 Apr 2012 20:47:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ottimizzare PHP con APC ( Alternative PHP Cache )</title>
		<link>http://www.icircle.it/ottimizzare-php-con-apc-alternative-php-cache/</link>
		<comments>http://www.icircle.it/ottimizzare-php-con-apc-alternative-php-cache/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 16:06:23 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[alternative php cache]]></category>
		<category><![CDATA[apc php]]></category>
		<category><![CDATA[cache php]]></category>
		<category><![CDATA[install apc]]></category>
		<category><![CDATA[utilizare cache php]]></category>
		<category><![CDATA[velocizzare php]]></category>
		<category><![CDATA[velocizzare script]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2992</guid>
		<description><![CDATA[Nonostante l&#8217;esecuzione di codice PHP non sia eccessivamente lenta, spesso si sente la necessità di poter sfruttare metodi che permettano di diminuire l&#8217;utilizzo di risorse sul server che facciano aumentare il numero di richieste gestite; parte di questi obiettivi possono essere raggiunti implementando operazioni di caching dell&#8217;output e di alcune richieste, ma spesso non basta. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-475" title="php" src="http://www.icircle.it/wp-content/uploads/2009/11/php-300x195.png" alt="" width="300" height="195" />Nonostante l&#8217;esecuzione di codice PHP non sia eccessivamente lenta,  spesso si sente la necessità di poter sfruttare metodi che permettano di  <strong>diminuire l&#8217;utilizzo di risorse sul server</strong> che facciano  aumentare il numero di richieste gestite; parte di questi obiettivi  possono essere raggiunti implementando <strong>operazioni di caching</strong> dell&#8217;output  e di alcune richieste, ma spesso non basta.</p>
<p>In PHP, ogni volta che una pagina contenente del codice di scripting  viene richiamata, questa viene analizzata e precompilata in codice  intermedio, che successivamente viene leggermente ottimizzato ed  eseguito. Come è possibile dedurre, il processo di compilazione ed  ottimizzazione viene effettuato sempre, indipendentemente dal fatto che  la pagina sia stata modificata o meno.</p>
<p>[ad code=4 align=center]</p>
<p><strong>APC (Alternative PHP Cache)</strong> è un&#8217;estensione nativa  per PHP che svolge principalmente il compito di precompilare,  ottimizzare e mantenere in memoria il codice intermedio associato agli  script PHP in modo che venga bypassato questo passaggio dopo la prima  richiesta effettuata ad un file PHP.</p>
<h2>Installare e configurare la libreria in Windows</h2>
<p>Probabilmente quando uscirà PHP 6 questi includerà nativamente il  supporto ad APC, alla quale verranno fatte alcune migliorie ed  ottimizzazioni al fine di adattarsi alle modifiche che verranno  apportate allo Zend Engine. Aspettando quel tempo, possiamo comunque  installare ed utilizzare APC poiché essa èuna libreria nativa  compatibile sia con PHP 4 sia con PHP 5.</p>
<p>Il processo di installazione è il solito che si usa seguire quando è  necessario aggiungere nuove librerie native per PHP. Nel caso di utenti  Windows è possibile scaricare la DLL precompilata della libreria (che  potete trovare direttamente sul <a href="http://www.php.net/downloads.php" target="_blank">sito di PHP</a>), posizionarla all&#8217;interno della directory contenente le altre estensioni ed infine abilitarla da file <em>php.ini</em> utilizzando la direttiva</p>
<div>
<pre>extension=php_apc.dll
</pre>
</div>
<h2>Nel caso di sistemi Debian:</h2>
<p>Innanzitutto abbiamo bisogno che sul nostro server sia installato PECL, una applicazione che ci permetterà di installare APC, quidni dopo aver installato un server Apache basterà lanciare il seguente comando</p>
<div>
<pre>pecl install apc</pre>
</div>
<p>Ora  ci verranno fatte un paio di domande durante la fase di installazione,  digitiamo il tasto INVIO per andare avanti durante la fase di  installazione.</p>
<p>-Adesso che APC è installato non ci resta che abilitarlo nella configurazione del PHP:</p>
<p>modifichiamo il file php.ini (normalmente lo trovate alla seguente posizione: <em>/etc/php5/apache2/php.ini</em>) ed inseriamo all’interno del file le seguenti regole:</p>
<p><em>extension=apc.so</em></p>
<p><em>apc.enabled=1</em></p>
<p><em>apc.shm_size=32M</em></p>
<p>Adesso salviamo il file e riavviamo Apache:</p>
<div>
<pre>/etc/init.d/apache2 restart</pre>
</div>
<h2>Come utilizzare APC</h2>
<p>Nonostante molte operazioni della libreria APC vengano svolte in modo trasparente durante l&#8217;esecuzione dello Zend Engine è possibile interrogare APC ed utilizzare alcune caratteristiche interessanti esposte dalla libreria.<br />
Spesso può risultare utile, soprattutto in fase di debugging o quando avvengono errori ed eccezioni inaspettate, conoscere lo stato della cache di APC per poter comprendere se questa ha influito sul malfunzionamento. Per ottenere un array associativo contenente i metadati relativi allo stato attuale della cache utilizziamo la funzione <strong>apc_cache_info</strong>.<br />
La cache viene ripulita automaticamente da APC in base alle direttive specificate in fase di compilazione utilizzando delle funzioni avanzate di garbage collection che permettono anche il riciclo della cache marcata per l&#8217;eliminazione. Nel caso fosse necessario è possibile comunque ripulire la cache manualmente utilizzando la funzione <strong>apc_clear_cache</strong>.<br />
Non so se è una cosa nota a tutti, ma definire costanti attraverso la funzione define di PHP è un&#8217;operazione molto lenta. Sebbene sia buona norma non abusare di questa funzione, fortunatamente possiamo sfruttare APC per definire costanti in modo molto veloce: la funzione apc_define_constants accetta come primo parametro una stringa per identificare con un nome univoco un gruppo di costanti, come secondo parametro un array chiave/valore che rappresenta le costanti da definire ed opzionalmente un terzo parametro che indica se trattare le costanti come case sensitive o no; dopo aver definito questo gruppo di costanti, è possibile utilizzare <strong>apc_load_constants</strong> per inserirle all&#8217;interno dello scope globale specificando come unico parametro la stringa che rappresenta il gruppo di costanti da caricare. Anche in questo caso abbiamo a disposizione un parametro aggiuntivo che indica se trattare le costanti in modo case sensitive o no.<br />
L&#8217;ultima, utilissima, funzionalità di APC è quella che permette di salvare in memoria condivisa delle variabili in modo che risultino persistenti tra richieste diverse. Possiamo salvare risultati di interrogazioni o elaborazioni molto complesse, assicurandoci che queste non vengano più eseguite per un determinato lasso di tempo. Tramite la funzione <strong>apc_store</strong>, che accetta come parametri l&#8217;identificativo della variabile da salvare, il valore della variabile ed un numero indicante i secondi di vita della stessa, possiamo salvare in memoria condivisa dei dati. Successivamente questi possono essere recuperati attraverso apc_fetch che accetta come parametro l&#8217;identificativo riferito ai dati salvati o rimossi manualmente utilizzando <strong>apc_delete</strong>.</p>
<p>Dalle ultime versioni della libreria è possibile passare un array alla funzione <strong>apc_fetch</strong> in modo da recuperare in un colpo solo tutti i valori necessari, evitando chiamate ripetitive alla funzione. È utile ricordare anche che <strong>apc_store</strong> pare non funzionare correttamente nel caso venga passato come secondo parametro un array; per ovviare al problema è possibile utilizzare l&#8217;oggetto ArrayObjects disponibile con PHP5.</p>
<p>che ne pensate dell&#8217;utilizzo della cache per le vostre applicazioni?</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/ottimizzare-php-con-apc-alternative-php-cache/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/ottimizzare-php-con-apc-alternative-php-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un Singleton PHP</title>
		<link>http://www.icircle.it/creare-un-singleton-php/</link>
		<comments>http://www.icircle.it/creare-un-singleton-php/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 11:17:34 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[creare singleton php]]></category>
		<category><![CDATA[esempi php]]></category>
		<category><![CDATA[instanziare oggetti php]]></category>
		<category><![CDATA[instanziare oggetti singleton]]></category>
		<category><![CDATA[pattern singleton]]></category>
		<category><![CDATA[singleton php]]></category>
		<category><![CDATA[tutorial php]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2664</guid>
		<description><![CDATA[Il Singleton è un design pattern creazionale che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza. L&#8217;implementazione più semplice di questo pattern prevede che la classe singleton abbia un unico costruttore privato, in modo da [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="size-medium wp-image-475 alignleft" title="php" src="http://www.icircle.it/wp-content/uploads/2009/11/php-300x195.png" alt="" width="300" height="195" />Il Singleton è un design pattern creazionale</strong> che ha lo scopo di garantire che di una determinata classe <strong>venga creata  una e una sola istanza</strong><strong>,</strong> e di fornire un punto di accesso globale a tale  istanza. L&#8217;implementazione più semplice di questo pattern prevede che la classe <em>singleton</em> abbia <strong>un unico costruttore privato</strong>, in modo da impedire l&#8217;istanziazione diretta della classe. La classe fornisce inoltre <strong>un metodo &#8220;getter&#8221; statico</strong> che ritorna una istanza della classe (sempre la stessa),  <strong>creandola preventivamente o alla prima chiamata del metodo</strong>, e  memorizzandone il riferimento in un attributo privato anch&#8217;esso statico.  Il secondo approccio si può classificare come basato sul principio  della <strong><em><a title="Lazy initialization" href="http://it.wikipedia.org/wiki/Lazy_initialization">lazy initialization</a></em></strong> (letteralmente &#8220;inizializzazione pigra&#8221;) in quanto la creazione  dell&#8217;istanza della classe viene rimandata nel tempo e messa in atto solo  quando ciò diventa strettamente necessario (al primo tentativo di uso).</p>
<p>Quello che andrò a realizzare è un Singleton in PHP per ottenere cosi l&#8217;istanza della mia classe<em></em>.</p>
<p>[ad code=4 align=center]</p>
<pre class="brush:php">class MyClass{
 //
 // utilizzo un Singleton per creare una sola istanza di questa classe.
 //
 private static $instance;

 /**
 * =---------------------------------------------------------------------=
 * getInstance
 * =---------------------------------------------------------------------=
 * Un metodo statico che restituisce un'istanza dell'oggetto MyClass.
 * Creo sola una di questa, in modo da restituire la stessa istanza
 * su ripetuti appelli di questo metodo.
 *
 * @return $instance MyClass.
 */
 public static function getInstance() {
    if (MyClass::$instance === NULL) {
       MyClass::$instance = new MyClass();
    }
    return MyClass::$instance;
 }

/**
* =---------------------------------------------------------------------=
* __construct()
* =---------------------------------------------------------------------=
* Il costruttore di MyClass, settato come metodo privato
*/
 private function __construct() { }

}</pre>
<p>Quindi ora per richiamare un istanza della nostra classe basterà richiamare il metodo statico getInstance()</p>
<pre class="brush:php">require_once 'myclass.php';
$myInstance = MyClass::getInstance(); //Creo un istanza dell'oggetto MyClass</pre>
<p>Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/creare-un-singleton-php/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/creare-un-singleton-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utility PHP: Come superare un firewall utilizzando PHP</title>
		<link>http://www.icircle.it/come-superare-un-firewall-utilizzando-php/</link>
		<comments>http://www.icircle.it/come-superare-un-firewall-utilizzando-php/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 11:52:37 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[applicazioni firewall php]]></category>
		<category><![CDATA[esempi php]]></category>
		<category><![CDATA[evadere firewall]]></category>
		<category><![CDATA[superare firewall]]></category>
		<category><![CDATA[superare firewall php]]></category>
		<category><![CDATA[superare firewall windows]]></category>
		<category><![CDATA[utility php]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2572</guid>
		<description><![CDATA[Avete il bisogno di navigare dall&#8217;ufficio, oppure da scuola (ragazzi mi raccomando studiate!) senza restrizioni? Bene allora ho qui una piccola applicazione PHP che vi permetterà di superare il firewall impostato in ufficio permettendovi tranquillamente l&#8217;accesso a tutti i siti precedentemente bloccati. PhpProxy è un web proxy http molto semplice da installare e adattabile a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-475" title="php" src="http://www.icircle.it/wp-content/uploads/2009/11/php-300x195.png" alt="" width="300" height="195" /><strong>Avete il bisogno di navigare dall&#8217;ufficio, oppure da scuola </strong>(ragazzi mi raccomando studiate!) <strong>senza restrizioni?</strong> Bene allora ho qui una piccola <strong>applicazione PHP che vi permetterà di superare il firewall</strong> impostato in ufficio permettendovi tranquillamente l&#8217;accesso a tutti i siti precedentemente bloccati.</p>
<p><strong>PhpProxy </strong>è un web proxy http molto semplice da installare e adattabile a tutte le necessità.</p>
<p>Per poterlo utilizzare basta scaricarlo: <a href="http://sourceforge.net/projects/poxy/" target="_blank"><em><strong>Download PhpProxy</strong></em></a></p>
<p>[ad code=4 align=center]</p>
<p>e caricare il contenuto in una cartella del vostro provider e settare correttamente i permessi (777).</p>
<p><em><strong>Piccola precisazione:</strong></em> Per poter supportare il protocollo <strong>https</strong> bisogna aver installato sul proprio server il <strong>modulo php<tt><span style="font-size: large;"> </span></tt>openssl<span style="font-size: large;"><br />
</span></strong></p>
<p>Allora che ve ne pare? Avete usato altri metodi?</p>
<p>Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/come-superare-un-firewall-utilizzando-php/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/come-superare-un-firewall-utilizzando-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Contare gli utenti on-line con PHP e MySql</title>
		<link>http://www.icircle.it/contare-gli-utenti-on-line-con-php-e-mysql/</link>
		<comments>http://www.icircle.it/contare-gli-utenti-on-line-con-php-e-mysql/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 20:48:18 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[contare utenti connessi]]></category>
		<category><![CDATA[contare utenti connessi con php]]></category>
		<category><![CDATA[contare utenti online]]></category>
		<category><![CDATA[contare utenti online php]]></category>
		<category><![CDATA[utenti connessi con php]]></category>
		<category><![CDATA[utenti connessi php]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2321</guid>
		<description><![CDATA[Un piccolo problemino che affligge noi programmatori PHP è quello di conoscere il numero di utenti che sono attualmente connessi al nostro sito. Per ovviare a questo problema ho realizzato una piccola pagina php che in pratica registra un identificatore per ogni sessione inizializzata dall&#8217;accesso di un utente, se questo identificatore non è presente nella [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignleft size-medium wp-image-475" title="php" src="http://www.icircle.it/wp-content/uploads/2009/11/php-300x195.png" alt="" width="300" height="195" /></strong>Un piccolo problemino che affligge noi programmatori PHP è quello di <strong>conoscere il numero di utenti che sono attualmente connessi al nostro sito.</strong></p>
<p>Per ovviare a questo problema ho realizzato una piccola pagina php che in pratica registra un identificatore per ogni <strong>sessione  inizializzata</strong> dall&#8217;accesso di un utente, se questo identificatore non è  presente nella tabella viene aggiunto, se esso è invece già presente  viene aggiornato il dato relativo al momento del suo accesso; nel caso  in cui il momento di accesso di un utente sia inferiore al timestamp  ottenuto sottraendo 5 minuti (300 secondi) dal risultato della funzione  time(), il record corrispondente verrà eliminato considerando l&#8217;utente  non più online.</p>
<p>Vi lascio il codice</p>
<p>[ad code=4 align=center]</p>
<pre class="brush:php">&lt;?php
// inizializzazione della sessione
session_start();
// creazione dell'identificatore di sessione
$sessione = session_id();
// memorizzo il tempo in cui l'utente si è connesso
$time = time();
// definizione dell'intervallo di tempo valido per l'utente connesso
$intervallo = $time-300; //dopo 300 secondi(5 minuti) di inattività l'utente sarà considerato off

//Effettuo la connessione
$connessione = mysql_connect('localhost','root','');
mysql_select_db('mydb');

// confronto tra identificatore di sessione e dati in tabella
$sql_confronto = "SELECT * FROM utenti_on_line WHERE sessione='$sessione'";
$res_confronto = mysql_query($sql_confronto) or die(mysql_error());

// se l'identificatore non è presente viene creato un nuovo record
if(@mysql_num_rows($res_confronto) == 0){
   $sql_inserimento = "INSERT INTO utenti_on_line(sessione, timestamp)VALUES('$sessione', '$time')";
   $res_inserimento = mysql_query($sql_inserimento) or die(mysql_error());
} else {
   // se l'identificatore è già presente viene aggiornato il
   // valore relativo al momento di connessione
   $sql_aggiornamento = "UPDATE utenti_on_line SET timestamp='$time' WHERE sessione = '$sessione'";
   $res_aggiornamento = mysql_query($sql_aggiornamento) or die(mysql_error());
}

// cancellazione dei record obsoleti
$sql_cancellazione = "DELETE FROM utenti_on_line WHERE timestamp&lt;$intervallo";
$res_cancellazione = mysql_query($sql_cancellazione) or die(mysql_error());

// estrazione dei record presenti in tabella per il conteggio
$sql_conteggio = "SELECT id FROM utenti_on_line";
$res_conteggio = mysql_query($sql_conteggio) or die(mysql_error());
$conteggio = mysql_num_rows($res_conteggio);

// stampa a video del conteggio
echo "Utenti online: " . $conteggio; 

// chiusura della connessione
@mysql_close();
?&gt;
</pre>
<p>Alla prossima<br />
Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/contare-gli-utenti-on-line-con-php-e-mysql/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/contare-gli-utenti-on-line-con-php-e-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feed RSS: come gestirli e crearli con PHP e XML</title>
		<link>http://www.icircle.it/feed-rss-come-gestirli-e-crearli-con-php-xml/</link>
		<comments>http://www.icircle.it/feed-rss-come-gestirli-e-crearli-con-php-xml/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 21:52:13 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cosa sono feed rss]]></category>
		<category><![CDATA[creare feed con php]]></category>
		<category><![CDATA[creare feed rss]]></category>
		<category><![CDATA[creare file xml]]></category>
		<category><![CDATA[creare xml con php]]></category>
		<category><![CDATA[fedd rss]]></category>
		<category><![CDATA[feed xml]]></category>
		<category><![CDATA[gestione file xml]]></category>
		<category><![CDATA[scrivere file xml]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2147</guid>
		<description><![CDATA[A partire dal 2008 in tutto il web è scoppiata la mania dei feed RSS. ma cosa sono in realtà i feed? Beh la risposta è semplice, sono file XML specifici per i blog grazie ai quali è possibile rimanere sempre aggiornati ogni volta che c&#8217;è un nuovo post utilizzando un semplice lettore di feed. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="feed-rss" src="http://farm4.static.flickr.com/3081/3226938130_7594559eb8_o.png" alt="" width="185" height="185" />A partire dal 2008 in tutto il web è scoppiata la mania dei <strong>feed RSS</strong>.<br />
ma cosa sono in realtà i feed?</p>
<p>Beh la risposta è semplice, sono <strong>file XML</strong> specifici per i blog grazie ai quali è possibile  rimanere sempre aggiornati ogni volta che c&#8217;è un nuovo post utilizzando un semplice lettore di feed. Per maggiore chiarezza vi lascio questo video che sicuramente saprà schiarivi le idee su cosa sono realmente i feed e quale è il loro potenziale</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/nJZVJoTSDyw?fs=1&amp;hl=it_IT" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/nJZVJoTSDyw?fs=1&amp;hl=it_IT" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: left;">Bene ora che abbiamo un idea su cosa siano i feed, andiamo a vedere come crearne uno con <strong>PHP e XML<br />
</strong></p>
<p style="text-align: left;">Il <strong>linguaggio XML</strong> è stato creato da W3C e a differenza dell&#8217; HTML deve rispettare alcune regole ferree, regole che peraltro sono definite dallo stesso programmatore e regolamentate da pagine di controllo (dtd &#8211; Document Type Definition) anch&#8217;esse compilate dal programmatore.</p>
<p style="text-align: left;">I Feed come detto precedentemente sono notoriamente associati alle <strong>news</strong>, ma niente ci impedisce di utilizzare un feed per qualsiasi altro tipo di informazione purché legato ad un database.</p>
<p style="text-align: left;">Ma vediamo ora un esempio di feed generato con php:</p>
<p style="text-align: left;">
<pre class="brush:php">&lt;?php
 header("Content-type: text/xml; charset=utf-8");//dichiaro che sto per scrivere una pagina in XML con php 

 echo ("&lt;rss version=\"2.0\"&gt;");//versione rss
 echo ("&lt;channel&gt;")//inizio channel
 echo ("&lt;title&gt; titolo feed &lt;/title&gt;");//titolo rss
 echo("&lt;link&gt; http://www.vostrosito.it/index.php &lt;/link&gt;");//link rss
 echo ("&lt;description&gt; descrizione feed &lt;/description&gt;");//descrizione rss
 echo "&lt;copyright&gt; Copyright 2010 proprietario &lt;/copyright&gt;\n";//copiright
 echo "&lt;docs&gt;http://blogs.law.harvard.edu/tech/rss&lt;/docs&gt;\n";//documento di informazione sulle specifiche dell'rss in oggetto
 echo "&lt;managingEditor&gt; email@vostrosito.it &lt;/managingEditor&gt;\n";//email del compilatore
 echo "&lt;webMaster&gt; email@vostrosito.it &lt;/webMaster&gt;\n";//email del webmaster
 echo ("&lt;language&gt;IT-it&lt;/language&gt;");//linguaggio

//Connessione e query al mio DB
$conn = @mysql_connect($host,$user,$password);//le vostre variabili di connessione database
$db = <strong>mysql_select_db('database');</strong>
$result = mysql_query("SELECT * FROM tabella ORDER BY id DESC LIMIT 5");//estraggo  gli ultimi 50 valori inseriti nel database e li ordino per id ( o qualunque altro nome colonna che indichi una data di inserimento)
while($row = mysql_fetch_assoc($result)){
   echo "&lt;item&gt;
           &lt;title&gt;".$row['titolo']."&lt;/title&gt;";//titolo
   echo"&lt;link&gt;$row['link']&lt;/link&gt;";//Link titolo. Potete anche inserire URL dinamici, ma SEMPRE ASSOLUTI (HTTP://www....)
 echo"&lt;description&gt;";//Inizio descrizione informazione
 echo"&lt;![CDATA[";//Tutto quello racchiuso fra &lt;![CDATA[ e ]]&gt; sarà scritto a video
 echo"&lt;font color=\"#C0C0C0\"&gt;Articolo:
 ".$row['testo']."
 &lt;/font&gt;
 &lt;br&gt;
 &lt;a href=".$row['link']."&gt;
 Continua...
 &lt;/a&gt;
 ]]&gt;";//fine &lt;![CDATA]
 echo"&lt;/description&gt;";//fine descrizione
 echo"&lt;guid&gt;link all'articolo&lt;/guid&gt;"; //Inserisci un URL univoco dell'informazione
 echo"&lt;category domain\"link alla categoria\"&gt;link alla categoria&lt;/category&gt;";//Inserisci la categoria dell'informazione
 echo"&lt;/item&gt;";//fine item
 }
 echo "&lt;/channel&gt;&lt;/rss&gt;";//fine channel e rss
 ?&gt;</pre>
<p>Ed ecco qui il vostro feed creato in poche righe di codice.</p>
<p>Che ne pensate?</p>
<p>Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/feed-rss-come-gestirli-e-crearli-con-php-xml/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/feed-rss-come-gestirli-e-crearli-con-php-xml/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gestire i file con PHP</title>
		<link>http://www.icircle.it/gestire-i-file-con-php/</link>
		<comments>http://www.icircle.it/gestire-i-file-con-php/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 14:20:07 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[aprire file con php]]></category>
		<category><![CDATA[fclose php]]></category>
		<category><![CDATA[fget php]]></category>
		<category><![CDATA[file php]]></category>
		<category><![CDATA[fopen php]]></category>
		<category><![CDATA[freads php]]></category>
		<category><![CDATA[leggere file php]]></category>
		<category><![CDATA[scrivere file con php]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2135</guid>
		<description><![CDATA[Uno dei problemi che uno sviluppatore web può affrontare durante un progetto, puo essere appunto la gestione (lettura o scrittura) di un file. In questo breve articolo vi illustrerò tutte le funzioni che PHP ci mette a disposizione per poter risolvere facilmente questo problema, basta cliccare sul nome della funzione per essere indirizzati sul sito [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-2136" title="php.gif" src="../wp-content/uploads/2010/10/100.gif-300x195.png" alt="" width="300" height="195" />Uno dei problemi che uno sviluppatore web può affrontare durante un progetto, puo essere appunto <strong>la gestione (lettura o scrittura) di un file</strong>.</p>
<p>In questo breve articolo vi illustrerò tutte le funzioni che PHP ci mette a disposizione per poter risolvere facilmente questo problema, basta cliccare sul nome della funzione per essere indirizzati sul sito di PHP.net per una descrizione approfondita:</p>
<p>[ad code=4 align=center]</p>
<ul>
<li><a href="http://it.php.net/fopen" target="_blank"><em><strong>fopen</strong></em></a>: Permette di aprire un file in diverse modalità (lettura/scrittura/append) o di crearlo se iniesistente</li>
<li><a href="http://it.php.net/fgets" target="_blank"><em><strong>fgets</strong></em></a> o <a href="http://it.php.net/fread"><em><strong>fread</strong></em></a>: Permettono la lettura di un file gia creato</li>
<li><a href="http://it.php.net/file"><em><strong>file</strong></em></a> : Legge il file e lo inserisce in un vettore</li>
<li><a href="http://it.php.net/fwrite" target="_blank"><em><strong>fwrite</strong></em></a>: Scrive in un file</li>
<li><em><strong><a href="http://it.php.net/fclose">fclose</a></strong></em>: Chiude un file aperto con fopen</li>
</ul>
<p>Logicamente la gestione dei file con php può essere effettuata solo per file che sono fisicamente presenti sul server, e non lato client.</p>
<p>E voi? Avete qualche pezzo di codice da condividere per approfondire l&#8217;argomento?</p>
<p>Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/gestire-i-file-con-php/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/gestire-i-file-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installazione di Apache2,PHP5 e MySQL su un server Linux</title>
		<link>http://www.icircle.it/installazione-di-apache-php5-e-mysql-su-un-server-linux/</link>
		<comments>http://www.icircle.it/installazione-di-apache-php5-e-mysql-su-un-server-linux/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 12:37:37 +0000</pubDate>
		<dc:creator>Riccardo Tartaglia</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache e php]]></category>
		<category><![CDATA[apache ubuntu]]></category>
		<category><![CDATA[installare apache su linux]]></category>
		<category><![CDATA[installare mysql linux]]></category>
		<category><![CDATA[installare php linux]]></category>
		<category><![CDATA[installazione apache2 linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.icircle.it/?p=2050</guid>
		<description><![CDATA[Per alcuni motivi lavorativi, mi sono trovato davanti alla necessità di installare e configurare il web-server Apache su una macchina linux Ubuntu, cosa che mi è stata possibile tramite il gestore dei pacchetti Apt Il gestore di pacchetti Apt (Advanced Package Tool) nasce all&#8217;interno del progetto Debian come erede di dpkg, il precedente gestore di [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2053" title="pamp00" src="http://www.icircle.it/wp-content/uploads/2010/09/pamp00.jpg" alt="" width="222" height="305" />Per alcuni motivi lavorativi, mi sono trovato davanti alla necessità di installare e configurare il <strong>web-server Apache</strong> su una macchina <strong>linux Ubuntu, </strong>cosa che mi è stata possibile tramite <strong>il gestore dei pacchetti Apt</strong></p>
<p>Il gestore di pacchetti <strong>Apt</strong> (Advanced Package Tool) nasce all&#8217;interno del <strong>progetto Debian</strong> come erede di dpkg, il precedente gestore di pacchetti di Debian, uno dei primi in ambiente Linux. Una caratteristica importante, peraltro oggi presente in molti gestori di pacchetti, è la gestione automatica delle dipendenze: installando un programma, Apt si preoccuperà di installare tutti i pacchetti da cui tale programma dipende, evitando quindi laboriose ricerche ed installazioni manuali. Altra caratteristica è la possibilità di specificare diverse sorgenti da cui reperire i pacchetti: un archivio accessibile via <strong>HTTP o FTP</strong>, il cd-rom di installazione oppure il file system locale.</p>
<p>[ad code=4 align=center]</p>
<p>Ma procediamo passo passo con l&#8217;installazione</p>
<ul>
<li><strong>Aggiornamento della lista dei pacchetti disponibili</strong> (è buona norma effettuarlo sempre prima di nuove installazioni):
<pre><code>sudo apt-get update</code></pre>
</li>
<li><strong>Installazione di Apache2: </strong>
<pre><code>sudo apt-get install apache2-mpm-prefork</code></pre>
</li>
<li><strong>Installazione di MySQL: </strong>
<pre><code>sudo apt-get install mysql-server</code></pre>
</li>
<li><strong>Installazione del modulo PHP5 per Apache2: </strong>
<pre><code>sudo apt-get install libapache2-mod-php5</code></pre>
</li>
<li><strong>Installazione della libreria per l’utilizzo di MySQL da PHP5: </strong>
<pre><code>sudo apt-get install php5-mysql</code></pre>
</li>
<li><strong>Installazione della libreria PHP per la manipolazione delle immagini: </strong>
<pre><code>sudo apt-get install php5-gd</code></pre>
</li>
<li><strong>Installazione della libreria PHP per l’esecuzione di PHP anche da linea di comando: </strong>
<pre><code>sudo apt-get install php5-cli</code></pre>
</li>
<li><strong>Attivazione dell’estensione MySQL sul file di configurazione di PHP5: </strong>
<pre><code>vi /etc/php5/apache2/php.ini</code></pre>
<p>modifica della riga</p>
<pre><code>;extension=mysql.so</code></pre>
<p>in</p>
<pre><code>extension=mysql.so</code></pre>
</li>
<li><strong>Riavvio di Apache2: </strong>
<pre><code>sudo /etc/init.d/apache2 restart</code></pre>
</li>
</ul>
<p>Se tutto è stato fatto per bene ora avrete il vostro web-server installato correttamente <img src='http://www.icircle.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Riccardo Tartaglia</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right;"><g:plusone size="small" count="1" href="http://www.icircle.it/installazione-di-apache-php5-e-mysql-su-un-server-linux/">{lang: 'it'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.icircle.it/installazione-di-apache-php5-e-mysql-su-un-server-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

