gpt4 book ai didi

php - 处理 HTTP 请求

转载 作者:可可西里 更新时间:2023-11-01 17:15:31 24 4
gpt4 key购买 nike

如果有来自许多客户端的 HTTP 请求到达 Web 服务器,请求将按顺序处理。

对于我想使用 token 桶系统的所有 http 请求。因此,当有第一个请求时,我将一个数字写入文件并为下一个请求递增该数字,依此类推。

我不想在数据库中这样做,因为数据库大小增加了..

这样做正确吗?请提出建议

编辑:因此,如果用户发布评论,则评论应存储在文件中而不是数据库中。因此,为了跟踪它,每个请求都会增加一个变量。这个数字将用于书面形式文件名并引用它以供将来引用。所以如果有很多请求,这是正确的方法吗..

谢谢..

最佳答案

为什么不锁定(http://php.net/manual/en/function.flock.php)文件夹中的文件?

First call locks 01,
Second call locks 02,
3rd call locks 03,
01 gets unlocked,
4th call locks 01

基本上每个 php 脚本都会尝试锁定它可以锁定的第一个文件,完成后它会解锁/删除文件。

我在一个有 250 多个由“进程管理器”生成的子进程的系统中使用它。尝试使用数据库,但它减慢了一切。

如果你想为某些内容增加文件编号,我建议使用 mktime() 或 time() 并使用


$now=time();
$suffix=0;
while(is_file($dir.$now.'_'.$suffix)) {
$suffix++;
}

但同样,根据您想要读取或使用数据的方式,有很多选择。您能否提供更多详细信息?

-----编辑 1-----

  1. 每个请求都有一个“锁文件”,锁id(编号)存储在$lock中。
  2. 三个访问者同时发帖,锁 ID 为 01、02、03(所描述情况的最后一步)

$now=time();
$suffix=0;
$post_id=30;
$dir='posts/'.$post_id.'/';
if(!is_dir($dir)) { mkdir($dir,0777,true); }
while(is_file($dir.$mktime.'_'.$lock.'_'.$suffix.'.txt')) {
$suffix++;
}

while 不需要,但我通常会保留它以防万一:)。这应该创建一个 txt 文件 30/69848968695_01_0.txt 和 ..02_0.txt 和 ..03_0.txt。

当您想显示评论时,只需按文件名对它们进行排序....

关于php - 处理 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com