繁体   English   中英

会话文件 - 什么时候才能完全创建?

[英]session file - when does it get created exactly?

我很想知道会话文本文件的确切创建时间? 一个简单而表面层面的答案可能是,嗯,当你使用session_start()时。 但是吗? 当php脚本结束时,它可以一直到最后吗?

是什么让我觉得最终可能是因为我知道每当你对页面的执行继续进行会话变量的更改时,PHP都不会写入会话文件。 例如,如果你有类似$_SESSION['x'] = $_SESSION['x'] + 1; 在一个循环中,会话文件并没有得到在每循环的每次迭代修改。 只有当PHP脚本完成后,PHP引擎才会对文件进行更改,以存储$_SESSION['x']的最终值。

使用相同的逻辑,我认为没有理由让PHP引擎在调用session_start时立即创建文件。 它可能只是推迟了这个过程。

这需要的是这个;

我可以用session_start()开始一个会话,设置几个会话变量,在函数中抛出它们,用它们作为全局变量,在脚本结束时,我取消它们,并销毁会话,结果,我假设没有创建了会话文件,因此不会产生与创建会话文本文件相关的开销。

我想听听你对此的见解。

我的目的是探索使用会话变量作为临时占位符来左右传递全局变量的可能性 - 而不处理文件I / O. 实际上,我根本不需要在下一页中使用这些变量。

在这种情况下,会话证明比在函数内使用全局变量更快吗?

经过测试,它会立即session_start上创建。 但是, session_destroy也会将其删除。 经测试:

mkdir sess && cd sess
vim main.php

session_save_path(dirname(__FILE__));
session_start();
sleep(5);
session_destroy();

php main.php &
ls # main.php   sess_rm4bcun6ear943mf61mdads190
fg # wait for script to end
ls # main.php

你问题的答案就是答案。 您将_SESSION用于全局变量目的的想法并不是一个好的...您也可以使用$GLOBALS 那里没有文件IO。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM