【问题标题】:PHP Session Variable PerformancePHP 会话变量性能
【发布时间】:2011-06-24 21:51:30
【问题描述】:

我想知道下面的代码是否是 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)。每次完整通过后,列表都会被打乱。在任何单个元素被打印两次之前,每个元素都会打印一次。

那么,这是最有效的方法吗?

【问题讨论】:

    标签: php session performance shuffle


    【解决方案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']);
    

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 2012-08-03
      • 2013-05-01
      • 2011-06-09
      • 1970-01-01
      • 2012-07-06
      • 2010-11-13
      • 2016-10-03
      相关资源
      最近更新 更多