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.000 の同時要求に対して機能することを 100% 確信しているわけではないため、データベース ソリューションはより洗練されたものになる可能性があります。

テーブルを作成する

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 に答える