PHP在套接字上下文中管理数据,就像会话一样

时间:2016-08-12 22:16:06

标签: php sockets session data-structures session-variables

我已经创建了与PHP websockets的聊天。我想在会话中存储有关用户的数据,并通过websockets基于活动实时更改和读取该数据。 正如我在互联网上发现的那样,当脚本(流程)实际上是一个websocket时,你不能使用会话。这对我来说似乎也是合乎逻辑的,因为会话数据可以从其他等待彼此的进程中改变。 由于套接字脚本不会因为进程从未完成而停止,因此您无法从套接字读取或写入会话。

我如何读取和写入类似会话的数据,而我不能将会话与套接字结合使用(在同一个脚本中)? (当然在一个简单的PHP页面中,没有套接字,我可以使用会话)。

1 个答案:

答案 0 :(得分:0)

内存数据缓存应该适合您的需求。它为您的不同进程提供了一个通用的位置来读取和写入比数据库或文件更快访问的数据。

结帐MemcachedMemcache;这两个都是与Memcached服务器连接的PHP扩展。扩展和服务器的交互方式与PDO和MySQLi扩展与MySQL服务器交互的方式相同。因此,您需要选择其中一个扩展名并安装服务器(Memcached homepage

设置和获取值非常简单。例如:

$cache = new Memcache();
$cache->connect('localhost', 11211); // connect to localhost on port 11211
$retrievedVal = $cache->get('some_key'); //get a value from the cache.

$cache->set($keyname, $value, 0, 15*60); //store value in cache for 15 minutes

连接到同一主机的所有脚本都可以访问相同的缓存值。