2011-06-24 18 views
0

以下のコードがPHPでセッション変数を最も効率的に使用しているかどうかは疑問でした。PHPセッション変数のパフォーマンス

<? 
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']++; 
} 
?> 

私が正しくそれをしなかった場合、コードの意図は、明らかです。しかし、基本的には一度ループされた文字列のリスト(randomArray)が存在します。各パスが完了すると、リストがシャッフルされます。単一の要素が2回印刷される前に、すべての要素が1回印刷されます。

これは、これを行う最も効率的な方法ですか?

答えて

1

次のように私はこれを単純化したい:

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']); 
関連する問題