首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使有100.000个用户同时访问,也只能第一次运行PHP脚本

问即使有100.000个用户同时访问,也只能第一次运行PHP脚本
EN

Stack Overflow用户
提问于 2012-11-15 08:13:40
回答 4查看 413关注 0票数 1

标题很清楚:

我有一个PHP文件,我希望它只在第一次执行,即使有100.000个用户试图同时访问它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-15 08:20:44

您可以使用写入服务器的锁定文件来完成此操作,如下所示:

代码语言:javascript
复制
if (!is_file("visited_once.txt"))
{
    //you're the one
    file_put_contents("visited_once.txt", "");
}

但也许数据库解决方案会更复杂,因为我不能100%确定文件解决方案是否适用于100.000个并发请求。

创建表

代码语言:javascript
复制
CREATE TABLE visited
(
    visit int NOT NULL,
    UNIQUE (visit)
);

在请求时执行以下操作

代码语言:javascript
复制
try
{
    $db->query("INSERT INTO visited VALUES (0)");
    //you're the one
}
catch (Exception $ex)
{
    //nope! Already visited
}

这使用唯一的键并依赖于数据库的一致性。

票数 2
EN

Stack Overflow用户

发布于 2012-11-15 08:18:21

代码语言:javascript
复制
<?php
if(file_exists('check.txt')) exit;
file_put_contents('check.txt','1');
...your code...
?>
票数 0
EN

Stack Overflow用户

发布于 2012-11-15 08:18:43

我会向文件中写入一些内容,作为脚本正在执行的标志,并在脚本的末尾删除该文件。在脚本开始时,检查文件是否存在。

例如:

代码语言:javascript
复制
$flag_file = 'flag.tmp';
if (file_exists($flag_file)) exit();
file_put_contents($flag_file, 1);

// rest of the script

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

https://stackoverflow.com/questions/13389632

复制
相关文章

相似问题

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