文件复制进度会话数据为空

时间:2013-10-28 08:10:42

标签: php

我正在尝试获取所有正在复制的文件的进度。

    $qryStr = explode(",",$_POST['data']);
$timestamp=$_POST['timestamp'];
$size=sizeof($qryStr);
//echo $size;
$offset=100/$size;
$progress=0;
$_SESSION[$timestamp]=$progress;
session_start();
foreach($qryStr as $value) {

    $src = $value;
    $dest = "../home/tmp/";

    $cmd = 'scp '.$src.' '.$dest.'';
    sleep(1);
    $progress+=$offset;
    $_SESSION[$timestamp] = ceil($progress);
    var_dump($_SESSION[$timestamp]);
    $result = shell_exec($cmd);
 }

获取存储在会话中的进度的代码

    session_start();

    var_dump($_SESSION['timestamp']);
     getProgress($_GET['timestamp']);

    function getProgress($timestamp) {
        if (isset($_SESSION[$timestamp])) {
        echo json_encode(array("progress" => $_SESSION[$timestamp]));
      } else {
      echo json_encode(array("progress" => -1));
  }
 }

当我尝试访问会话数据时,我将其作为null。我脚本中的任何问题。

1 个答案:

答案 0 :(得分:0)

您在以下行中使用了$timestamp

$_SESSION[$timestamp] = ceil($progress);

相反,请使用

$_SESSION['timestamp'] = ceil($progress);

只有这样才能在$_SESSION['timestamp']中使用,否则将在$_SESSION['2013-10-28 14:33:00']中,类似于非通用的内容。