在Apache :: Sessions:MySQL会话中存储复杂的哈希值

时间:2018-11-26 05:08:25

标签: mysql json apache perl session

因此,我正在尝试将解码的JSON对象存储到绑定的Apache会话中。这是我的代码:

    $url="https://apilink";

    $content = get($url);
    die "Can't Get $url" if (! defined $content);

    $jsonOb = decode_json($content);
    %aprecords = %$jsonOb;

    #Push the jsonOb in the session
    $session{apirecords} = \%aprecords ;

$session{apirecords}不存储%aprecords引用。虽然,当我将语句替换为$session{apirecords} = \%jsonOb ;时,它将apirecords存储在会话表中,但是对%jsonOb的引用中没有任何值。

PS: 我已经尝试了以下方法,但似乎都没有效果: 1)$session{apirecords} = \%$jsonOb ; 2)$session{apirecords} = { %aprecords } ;

JSON对象具有良好的结构。

绑定会话的代码:

  tie %session, "Apache::Session::MySQL", $sessionID, 
   {
    Handle => $dbObject,
    LockHandle => $dbObject,
    TableName => 'sessions',
    };

  #If a session ID doesn't exist, create a new session and get new session ID
  if (!defined ($sessionID)){
     $sessionID = $session{_session_id};
     $session{count}=0;
}

非常感谢您的帮助!

JSON示例:https://jsonblob.com/feed3bba-f1cd-11e8-9450-2904e8ecf943

1 个答案:

答案 0 :(得分:0)

正如GMB所指出的。 Blob大小(64 KB)不足以容纳JSON对象。 解决方案是将blob数据类型更改为mediumblob