我相信PHP,每当用户向后端PHP页面发送请求时,就会启动一对一的通信,即根据用户的请求创建并执行该页面的新实例。
我的问题是,如果每次创建一个新实例,我想创建一个PHP脚本,该脚本在所有实例之间共享,
例如:我想在该脚本中存储几百个随机数(让我们将其命名为pool.php - 一个静态池),并且每次向后端页面(假设为BE.php)发出请求时, BE.php每次请求pool.php返回一个唯一变量,一旦使用了所有变量,我将在pool.php中放入一个逻辑来创建新的变量集
如果我的问题不明确,请告诉我
答案 0 :(得分:1)
Memcached是一个很好的候选人。
它是一个键/值存储,尽管PHP来来往往仍然存在。您可以从一个PHP脚本编写值并从另一个PHP脚本中读取它们。这不是您正在寻找的,但可以用于相同的目的,并且比连接到其他PHP脚本的套接字更容易处理。
答案 1 :(得分:1)
您可以使用MySQL解决此问题并锁定相关表格。将此变量池保存在单独的表中,然后使用SQL表级锁定来阻止其他请求,直到当前请求完成为止,使用:
SELECT GET_LOCK( 'my_lock', 10 ) AS success
确保检查查询返回1,这意味着您现在有一个锁。如果没有,您的查询会等待锁定超时。
然后执行普通查询,例如检查是否存在非占用变量。如果是这样,通过更新它或其他任何东西来占用它。
然后使用:
释放锁定DO RELEASE_LOCK( 'my_lock' )
数字10是每个请求在失败前等待的超时。
答案 2 :(得分:1)
Tarun ,您确实知道数据库中有一些名为AUTO_INCREMENT
的字段,可用作primary keys
用户评论。每次添加新注释时,该字段都会被数据库服务器递增,并且每个新条目都会获得unique ID
而不会出汗?
唯一可行的方法是使用数据库和某种Mutex
或 MySQL 的内部Mutex
,例如 John Severinson 如果AUTO_INCREMENT
字段不够,请说。
PS :性能开销 ...在谈论PHP脚本时,这是一个非问题。如果您需要性能,请使用C / C ++编写站点。你说的是毫秒(0.001秒)或更少。如果这会影响您的表现,您需要重新审视您的项目/逻辑。