gpt4 book ai didi

c++ - 在应用程序重新启动时将数组保留在内存中

转载 作者:行者123 更新时间:2023-11-27 22:39:33 26 4
gpt4 key购买 nike

我有一个 C++ 后端服务器应用程序。当我们的用户登录到应用程序时,会为每个用户创建一个 SESSION 对象(包含数据库连接、访问权限、指针等的复杂 C++ 对象)。然后将对象保存在一个数组中。我正在使用批处理脚本在崩溃的情况下重新启动应用程序。

问题是,万一应用程序崩溃,SESSIONS 数组就会被破坏。当应用程序再次启动时,数组为空。因此,用户需要重新登录。

是否有任何方法可以在应用程序重新启动时保留 SESSIONS 数组?

我使用的是 Qt 5.5 框架,操作系统是 Ubuntu Linux。

代码:

static QHash<QString,Session*> sessions

class Session {
bool logged_in;
QString aID;
QString sID;
QMap<QString,QMap>;
QMap<QString,QVariant> m_vars;
bool m_database;
int m_minutes;
QTimer* m_sessionTimer;
bool m_valid;
CustomClass* CustomClass;
CustomClass2* CustomClass;
QTimer* timer;
QList <CustomClass3*> objects;
}

CustomClass {
//15 getter-setter functions...
CustomClassInterface interface; //PIMPL
}

CustomClassInterface {
DatabaseClass database;
CustomUserClass userClass;
//...More 5-6 QList items
}

CustomClass2 {
//15 getter-setter functions...
CustomClass2Interface interface; //PIMPL
}

CustomClass2Interface {
DatabaseClass database;
CustomUserClass userClass;
//...More 5-6 QList items
}

...
The class is huge so I can't write the whole code here

向所有类添加序列化需要重写一堆库。那么,没有实现序列化就没有其他方法吗?比如 mmap 什么的。

最佳答案

创建/更新 session 时能否将 session 保存在数据库/文件中?每当您启动服务器时,恢复它们。

关于c++ - 在应用程序重新启动时将数组保留在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50147682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com