首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的会话间变量

PHP中的会话间变量
EN

Stack Overflow用户
提问于 2011-12-09 08:00:51
回答 4查看 884关注 0票数 3

我相信,一旦脚本或会话结束,全球化和超全球化就会消亡。在PHP中存储会话间变量的最佳方法是什么?换句话说,我希望每个会话都能访问一个变量。(它将是一个布尔值,用于同步访问服务器上的资源。)除了将值存储在文件中之外,还有解决方案吗?把变量保存在记忆里会很好..。

编辑:

我只想做到这一点:

代码语言:javascript
复制
while ($beingused)
   sleep(5);
$beingused = true;
// Do something

解决方案:

非常感谢你们的帮助。这是基于您的输入的我的解决方案。

代码语言:javascript
复制
memcache_pconnect('localhost');
while (memcache_get('inuse') == 'true')
    usleep(10);
memcache_set('inuse', 'true');
// Do something
memcache_set('inuse', 'false');

更新

实际上,我最终还是用了一个文件解决方案。每次用户与应用程序交互时,都会向它提供一个脚本,该脚本将根据用户输入进行更改。我意识到脚本文件的存在可以作为布尔值加倍,正如在许多响应中所建议的那样。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-09 08:21:58

我会使用一个具有特定名称的空文件(比如Linux中的PID文件)。在执行命令之前,脚本检查文件是否存在,如果不存在,则创建文件。执行shell脚本后,删除该文件。但是要小心文件系统缓存。

另一个快速选择是将标志存储在内存数据库中,如memcache或Redis。

票数 2
EN

Stack Overflow用户

发布于 2011-12-09 08:10:49

根据您的问题,我认为您想要的是使用“内存中的数据库”,比如,或者使用等创建的数据库。

但我不确定是否值得使用内存中的数据库来保存一个变量。

参见更多详细信息:http://en.wikipedia.org/wiki/In-memory_database

编辑:

在OP编辑之后,他需要的似乎是在执行特定任务之前获得锁。然后,我认为您也可以使用这些php 信号量相关函数。

http://www.php.net/manual/en/function.sem-get.php

http://www.php.net/manual/en/function.sem-acquire.php

http://www.php.net/manual/en/function.sem-get.php

票数 2
EN

Stack Overflow用户

发布于 2011-12-09 08:08:49

用于跨浏览器保存:使用cookie。要访问它们,请使用$_COOKIE[]set_cookie()

要在服务器上保存:使用数据库字段。

更新

尽管投了反对票,在更新之后,您似乎可以在数据库中设置一个布尔值,并相应地检查它的值。当然,该页面在数据库中有一个条目--一个节点、一个日志或其他东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8442635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档