PHP自定义会话路径:是否有机制违背我的意愿删除我的会话文件?

PHP自定义会话路径:是否有机制违背我的意愿删除我的会话文件?,php,session,cron,Php,Session,Cron,我制作了一个PHP应用程序,它完全依赖于会话文件,而会话文件意味着长时间(例如,树周、一个月……) 因为我的PHP应用程序将在共享托管环境中运行,所以我将自定义会话保存到包含所需会话文件的应用程序根目录中 我想知道:是否有任何基于Linux系统的cron机制,或者我不知道的任何其他机制,如果会话文件在很长一段时间内未被触及,就会删除它们,因为它会错误地认为会话文件是不必要的垃圾? 这会把我的申请弄得一团糟 我之所以担心,主要是因为我在这里找到了一些答案(http://stackoverflow.

我制作了一个PHP应用程序,它完全依赖于会话文件,而会话文件意味着长时间(例如,树周、一个月……)

因为我的PHP应用程序将在共享托管环境中运行,所以我将自定义会话保存到包含所需会话文件的应用程序根目录中

我想知道:是否有任何基于Linux系统的cron机制,或者我不知道的任何其他机制,如果会话文件在很长一段时间内未被触及,就会删除它们,因为它会错误地认为会话文件是不必要的垃圾?

这会把我的申请弄得一团糟


我之所以担心,主要是因为我在这里找到了一些答案(http://stackoverflow.com/questions/8693934/how-does-php-know-when-to-delete-a-session)我觉得你的会话文件可能会被php会话垃圾例程删除

检查这些配置选项并查找有关php会话gc的更多信息


您需要注意
gc-.*
指令。

会话应该持续一个会话,三周听起来比一个会话长得多。您可能更喜欢使用某种数据库来存储更持久的数据。谢谢。我知道数据库更适合这个用途,但我有理由让应用程序DB独立。是的,旧的会话文件会被php删除,即使您有一个自定义路径。但是,通常您会使用cookie来长期存储,而不是会话文件。@Miloshio,如果您不能使用成熟的数据库服务器,您仍然可以使用SQLite或甚至好的ol文本文件。主要的一点是,您确实不应该将会话用于持久性。它们被明确地设计为不持久。坦斯克死胡同。您认为php会话垃圾例程可能会删除这些文件,即使它们位于自定义会话目录路径中?我的意思是,如果您确定会话文件已被删除,gc很可能对此负责。此外,您还可以设置自定义会话存储,例如MySQL,您可以在其中轻松跟踪会话数(
从会话中选择COUNT(*)
),并不时比较这些值。如果您想使用文件系统,可以使用以下命令获取文件数:
ls-l | wc-l
谢谢。我还没有遇到任何问题,24小时过去了,会话文件没有被触动……好吧,我脑子里没有函数touch()。我认为,如果我在调用可能运行垃圾收集机制的函数(我认为session_start)之前对会话文件执行此函数,这可能会解决问题……如果您使用的是debian linux,则有一个位于/etc/cron.d/php5的cron。此cron每30分钟检查一次/var/lib/php5/(和子文件夹)中的会话文件的mtime是否早于过去24分钟。如果是这样,这些文件将被删除。