PHP:创建某种公共变量池,PHP代码可以从中挑选变量

PHP: Creating some sort of common pool of variables from where php code can pick up variables

本文关键字:PHP 变量 代码 挑选 创建      更新时间:2023-09-26

我相信在PHP中,每当用户向后端PHP页面发送请求时,都有一个一对一的通信开始,也就是说,该页面的新实例被创建并根据用户的请求执行。

我的问题是,如果每次创建一个新实例,我想创建一个PHP脚本,它在所有实例之间共享,

例如:我想在该脚本中存储几百个随机数(让它命名为pool.php -静态池),每次请求后端页面(让我们说BE.php), BE.php请求pool.php每次返回一个唯一的变量,一旦所有变量都被使用,我将在pool.php中放入逻辑来创建一组新的变量

如果我的问题不清楚,请告诉我

Memcached是一个很好的候选。

它是一个键/值存储,尽管PHP来来去去,它仍然存在。可以从一个PHP脚本写入值,然后从另一个PHP脚本读取值。这不是您想要的,但可以用于相同的目的,并且比连接到其他PHP脚本的套接字更容易处理。

http://memcached.org/

您可以使用MySQL并锁定问题表来解决这个问题。将此变量池保存在单独的表中,然后使用SQL表级锁来阻止其他请求,直到当前请求完成,使用以下命令:

SELECT GET_LOCK( 'my_lock', 10 ) AS success

确保检查查询是否返回1,这意味着您现在有一个锁。如果没有,那么您的查询将超时等待锁。

然后执行普通查询,例如检查是否存在未被占用的变量。如果是的话,通过更新或其他方式占用它。

释放锁,使用:

DO RELEASE_LOCK( 'my_lock' )

数字10是每个请求在失败之前等待的超时。

Tarun,您确实知道数据库有一些称为AUTO_INCREMENT字段的东西,可以用作用户评论的primary keys。每次添加新评论时,数据库服务器都会增加该字段的值,并且每个新条目都可以轻松获得unique ID ?

唯一可行的方法是使用数据库和某种MutexMySQL的内部MutexJohn Severinson说,如果AUTO_INCREMENT字段将不够。

p : 性能开销…当谈论PHP脚本是一种没有问题。如果你需要性能,用C/c++编写你的站点。您谈论的是毫秒(0.001秒)或更短。如果这将影响您的性能,您需要重新审视您的项目/逻辑。