我想在我的脚本中使用会话值,使用php存储在服务器上,任何人都可以解释实现此目的的过程。
我想构建一个聊天应用程序,以便使用这些会话值。
假设usera和userb已登录,并且他们的用户ID是基于此场景进行会话我想要做一个聊天应用。
现在我已经完成了应用程序,但我使用了Javascript的setinterval函数,我正在调用聊天,我想避免数据库每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)
$ _ 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)而不是数据库或基于文件的缓存。这会将负载放在客户端而不是服务器上,所有操作都会实时发生,而不是轮询更改。
有些例子,请参阅: