使用高流量的$_Session变量



我正在为一家公司做一个快速调查,该公司将连续2天每小时获得约20万(高峰时)访客。我只是想知道使用$_SESSION变量是否会占用服务器。我们在这些变量中存储的所有内容最多是6个字符串或单个数字整数。我是PHP世界的新手,所以我不确定有多可靠,或者$_Session变量会占用多少服务器。我们使用的服务器将是云服务器。最后要注意的是,在我结束之前,每个访问者最多只能持续6 - 10分钟。

任何帮助将非常感激!

默认情况下,$_SESSION中的数据将在每次调用session_write_close()或脚本终止时写入磁盘。如果不在将要使用的服务器硬件上测试最终应用程序,就无法确切地知道这将如何执行。由于数据量很小,真正的问题是磁盘延迟。一个简单的解决方法是将PHP的session_save_path设置为内存中的文件系统。

捆绑如何?磁盘空间?使用默认的基于文件的会话处理程序存储一个简单的6char字符串将在磁盘上占用大约6+length-of-variable-name + ~6个字符的空间。在会话文件中加载/反序列化数据会有一些开销。但这将比加载/编译使用会话数据的脚本的初始开销少得多。

请记住,PHP的默认会话使用磁盘作为存储介质-在脚本退出后它们不会在内存中持久化。

我认为您不希望将数据存储在会话中,因为它写入磁盘。如果有人用多个请求访问应用程序,你能保证他们访问云中的同一台机器吗?这个写起来很复杂。我宁愿cookie用户

http://php.about.com/od/learnphp/qt/session_cookie.htm

http://www.quora.com/Does-PHP-handle-sessions-by-writing-session-variable-data-to-disc-or-does-this-information-persist-only-in-RAM-Will-accessing-session-data-cause-a-disc-read-in-PHP

就像其他人说的,如果你想扩展,我会使用Memcached,但是直接回答你的问题,我认为你的服务器应该能够处理你所描述的用法。

在PHP中,您可以更改会话处理程序。默认的会话处理程序是在临时文件中写入数据,每个会话一个文件。它工作得很好,但是在运行高流量应用程序时有限制(尽管在200K/小时的情况下,默认处理程序应该没有问题)。

一个简单的解决方案是使用Memcached的会话处理程序,与PECL/Memcache扩展(不要与PECL/Memcached扩展混淆):

http://www.php.net/manual/en/memcache.examples-overview.php(参见示例#2)

最新更新