标题很清楚:
我有一个 PHP 文件,我希望它只在第一次执行,即使有 100.000 个用户尝试同时访问它。
您可以使用写入服务器的锁定文件来执行此操作,例如:
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
}
这使用唯一键并依赖于数据库一致性。
<?php
if(file_exists('check.txt')) exit;
file_put_contents('check.txt','1');
...your code...
?>
我会将一些内容写入文件作为脚本正在执行的标志,并在脚本结束时删除文件。在脚本开始时检查文件是否存在。
例如:
$flag_file = 'flag.tmp';
if (file_exists($flag_file)) exit();
file_put_contents($flag_file, 1);
// rest of the script
unlink($flag_file);
你可以写入一个 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
}