如何使用php获取服务器上的所有会话值存储

时间:2015-06-09 08:45:34

标签: php jquery mysql ajax

我想在我的脚本中使用会话值,使用php存储在服务器上,任何人都可以解释实现此目的的过程。

我想构建一个聊天应用程序,以便使用这些会话值。

假设usera和userb已登录,并且他们的用户ID是基于此场景进行会话我想要做一个聊天应用。

现在我已经完成了应用程序,但我使用了Javascript的setinterval函数,我正在调用聊天,我想避免数据库每3毫秒点击一次。

请帮帮我

提前致谢

3 个答案:

答案 0 :(得分:2)

您基本上尝试将PHP会话文件用作文件缓存。

相反,您应该使用对象缓存系统,例如Memcached或Redis。如果内存缓存不是一个选项(共享主机等),那么你可以实现自己的文件缓存(或者你可以使用类似PHPFastCache的东西,它支持文件缓存)。

注意:聊天应用的文件缓存可能会也可能不会加速您的应用。这取决于你如何实现它以及许多其他因素。

答案 1 :(得分:0)

Hi put the session value in input box,

    <input type='hidden' id='session_value' value='<?php $_SESSION['value']?>'>

Using the id fetch the session value in script,

 <script>
var session_value = document.getElementById ( "session_value" );
</script>

答案 2 :(得分:0)

运行轮询聊天系统3毫秒是非常短暂的延迟。我建议将它增加到至少200毫秒,但最好是大约1000毫秒。

$ _ SESSION值是每个用户,不建议用于查看聊天流,原因有很多。相反,听起来您只是更新聊天Feed。

除非数据库托管在另一台服务器上,否则$ _SESSION将是等效的,因为数据库也是有效的文件。实际上,数据库通常比读取原始文件存储更快,因为查询通常是缓存的,而索引可以帮助更快地查找记录。此外,您不必担心文件的并发连接。

如果有任何内容启用OPCache并为您的PHP安装安装APCu,以帮助提供请求。 OPCache会将已编译的OP代码缓存到内存中,以便后续的文件请求不需要重新编译。 APCu将充当您的文件缓存,再次将您呈现的数据存储在内存中。 此外,许多数据库框架(如Doctrine)也可以利用APC缓存进行查询和结果缓存。

我建议您尝试使用MEMORY存储引擎,而不是使用InnoDB或MyISAM存储引擎来处理聊天消息。 因此,不是访问文件系统I / O而是数据库将使用内存I / O.一般概念是少量写入,许多读取。由于一个人写入数据库,需要每个人都读取数据。请记住,内存存储引擎是临时的,如果服务器重新启动或断电,则会丢失。

有关详细信息,请参阅:https://dev.mysql.com/doc/refman/5.6/en/memory-storage-engine.html

总的来说,如果你能够,我建议你看一下使用Socket IO(Websockets)而不是数据库或基于文件的缓存。这会将负载放在客户端而不是服务器上,所有操作都会实时发生,而不是轮询更改。

有些例子,请参阅:

  1. 棘轮http://socketo.me/
  2. 反应http://reactphp.org/
  3. Node.js http://tutorialzine.com/2014/03/nodejs-private-webchat/