0

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

    $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));
  }
 }

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

4

1 回答 1

0

您已$timestamp在以下行中使用,

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

相反,使用

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

只有这样它才会在 中可用$_SESSION['timestamp'],否则将在 中$_SESSION['2013-10-28 14:33:00'],类似于非通用的东西。

于 2013-10-28T09:04:02.590 回答