标题很清楚:
我有一个PHP文件,我希望它只在第一次执行,即使有100.000个用户同时尝试访问它。
答案 0 :(得分: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
}
这使用唯一键并依赖于数据库一致性。
答案 1 :(得分:0)
<?php
if(file_exists('check.txt')) exit;
file_put_contents('check.txt','1');
...your code...
?>
答案 2 :(得分:0)
我会将某些内容写入文件作为正在执行脚本的标志,并在脚本末尾删除该文件。在脚本开始时检查文件是否存在。
e.g:
$flag_file = 'flag.tmp';
if (file_exists($flag_file)) exit();
file_put_contents($flag_file, 1);
// rest of the script
unlink($flag_file);
答案 3 :(得分: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
}