即使100.000用户同时访问它,也只是第一次运行PHP脚本

时间:2012-11-15 00:13:40

标签: php file

标题很清楚:

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

4 个答案:

答案 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
}