1

标题很清楚:

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

4

4 回答 4

2

您可以使用写入服务器的锁定文件来执行此操作,例如:

if (!is_file("visited_once.txt"))
{
    //you're the one
    file_put_contents("visited_once.txt", "");
}

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

创建你的表

CREATE TABLE visited
(
    visit int NOT NULL,
    UNIQUE (visit)
);

根据要求做这样的事情

try
{
    $db->query("INSERT INTO visited VALUES (0)");
    //you're the one
}
catch (Exception $ex)
{
    //nope! Already visited
}

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

于 2012-11-15T00:20:43.827 回答
0
<?php
if(file_exists('check.txt')) exit;
file_put_contents('check.txt','1');
...your code...
?>
于 2012-11-15T00:18:20.697 回答
0

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

例如:

$flag_file = 'flag.tmp';
if (file_exists($flag_file)) exit();
file_put_contents($flag_file, 1);

// rest of the script

unlink($flag_file);
于 2012-11-15T00:18:43.267 回答
0

你可以写入一个 txt 文件或 MySQl 表吗?如果是这样,将文本文件中的字符或 MySQL 表中的字段设置为 0,并且 PHP 脚本第一次运行时,将其设置为 1,并使用 if 语句:

RETRIEVE YOUR NUMBER VIA TXT OR MYSQL
$myVar = YOUR NUMBER;

if ($myVar > 0){
//don't run
}
else{
//run
}
于 2012-11-15T00:19:05.610 回答