我相信,一旦脚本或会话结束,全球化和超全球化就会消亡。在PHP中存储会话间变量的最佳方法是什么?换句话说,我希望每个会话都能访问一个变量。(它将是一个布尔值,用于同步访问服务器上的资源。)除了将值存储在文件中之外,还有解决方案吗?把变量保存在记忆里会很好..。
编辑:
我只想做到这一点:
while ($beingused)
sleep(5);
$beingused = true;
// Do something解决方案:
非常感谢你们的帮助。这是基于您的输入的我的解决方案。
memcache_pconnect('localhost');
while (memcache_get('inuse') == 'true')
usleep(10);
memcache_set('inuse', 'true');
// Do something
memcache_set('inuse', 'false');更新
实际上,我最终还是用了一个文件解决方案。每次用户与应用程序交互时,都会向它提供一个脚本,该脚本将根据用户输入进行更改。我意识到脚本文件的存在可以作为布尔值加倍,正如在许多响应中所建议的那样。
发布于 2011-12-09 08:21:58
我会使用一个具有特定名称的空文件(比如Linux中的PID文件)。在执行命令之前,脚本检查文件是否存在,如果不存在,则创建文件。执行shell脚本后,删除该文件。但是要小心文件系统缓存。
另一个快速选择是将标志存储在内存数据库中,如memcache或Redis。
发布于 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
发布于 2011-12-09 08:08:49
用于跨浏览器保存:使用cookie。要访问它们,请使用$_COOKIE[]和set_cookie()。
要在服务器上保存:使用数据库字段。
更新
尽管投了反对票,在更新之后,您似乎可以在数据库中设置一个布尔值,并相应地检查它的值。当然,该页面在数据库中有一个条目--一个节点、一个日志或其他东西。
https://stackoverflow.com/questions/8442635
复制相似问题