Istruzioni "casuali"
Supponiamo di voler cancellare periodicamente i file contenuti in una cartella del server, o eseguire saltuariamente determinate query. Una soluzione comunemente adottata è quella di affidare a cron (o programmi analoghi) l’esecuzione di particolari script ad intervalli regolari di tempo. Non sempre però si ha a disposizione cron e a volte non è neanche necessaria una programmazione rigorosa degli istanti di esecuzione. Si pensi ad una routine “spazzina”, realizzata per eliminare vecchi record nel database. L’importante è che venga lanciata diverse volte al giorno (alla settimana o al mese), non importa quando.
Una semplice tecnica per ottenere questo risultato consiste nell’associare una probabilità di esecuzione a determinate istruzioni presenti in una pagina comunemente visitata del nostro sito web. Per farlo basta utilizzare la funzione mt_rand per generare un numero casuale tra 1 e 100 ed osservare che la probabilità che tale numero sia ad esempio minore o uguale a 20 è proprio pari al 20%. Il seguente esempio utilizza proprio questo principio:
<?php
// imposto la probabilità dell'evento
$probabilità = 13; // 13%
if(mt_rand(1,100) <= $probabilità)
{
// si è verificato l'evento
echo 'Evento!';
}
?>
Per verificare che la stringa “Evento!” viene mostrata con probabilità pari al 13% basta eseguire il prossimo script che si limita a ripetere la stessa tecnica per 100.000 volte e calcola la frequenza di successi dell’IF:
<?php
// imposto la probabilità dell'evento
$probabilità = 13; // 13%
// il contatore dei successi
$successi = 0;
// ripeto 100.000 volte il test
for ($i=0 ; $i<100000 ; $i++)
{
if( mt_rand(1,100) <= $probabilità)
{
// incremento il contatore
$successi++;
}
}
echo 'Percentuale di successi: ' , $successi/1000, '%';
?>
Ovviamente non si otterrà come risultato esattamente 13% ma un valore molto prossimo.