2011-06-24 3 views
0

Je me demandais si le code ci-dessous était l'utilisation la plus efficace des variables de session en PHP.PHP Session Variable Performance

<? 
session_start(); 
if (!isset($_SESSION['count']) || !isset($_SESSION['randomArray'])) { 
    $count = 0; 
    $randomArray = array(); 
    $sql="SELECT youtubeurl FROM Foodlist"; 
    $result=mysql_query($sql); 
    while($row=mysql_fetch_array($result)){ 
     array_push($randomArray,$row['youtubeurl']); 
    } 
    shuffle($randomArray); 
    $_SESSION['randomArray'] = $randomArray; 
    $_SESSION['count'] = $count; 
} elseif ($_SESSION['count'] >= sizeof($_SESSION['randomArray'])){ 
    $_SESSION['count'] = 0; 
    $randomArray = $_SESSION['randomArray']; 
    shuffle($randomArray); 
    $_SESSION['randomArray'] = $randomArray; 
} else{ 
    $randomArray = $_SESSION['randomArray']; 
    $count = $_SESSION['count']; 
    echo $randomArray[$count]; 
    $_SESSION['count']++; 
} 
?> 

L'intention du code devrait être évidente, si je l'ai fait correctement. Mais fondamentalement, il existe une liste (randomArray) de chaînes qui est bouclée une fois. Après chaque passe complète, la liste est mélangée. Chaque élément s'imprime une fois avant qu'un élément ne soit imprimé deux fois.

Alors, est-ce le moyen le plus efficace de le faire?

Répondre

1

Je simplifie cela comme suit:

if (empty($_SESSION['randomList'])) { 
    $result = mysql_query("SELECT youtubeurl FROM Foodlist"); // or die(mysql_error()) 
    while ($row = mysql_fetch_assoc($result)) { 
     $_SESSION['randomList'][] = $row['youtubeurl']; 
    } 
    shuffle($_SESSION['randomList']); 
} 

echo array_shift($_SESSION['randomList']);