2012-01-11 19 views
0

私はPHPコードを1回だけ実行します。つまり、初めてインストールするときに読み込まれ、実行されないようにする必要があります。私はforifの状態で試しましたが、それは私のためには機能しませんでした。一度だけ実行されるPHPコード

これは私のコードです:

$table = self::checkTablesExist(); 

    if(empty($table)) { 
    self::createTables(); 

    self::createRootUser(self::$preflight_config); 
     if(self::$preflight_config->sample_data == 1) { 
      self::installSampleData(); 
     } 
    } 
+0

はあなたが何を意味するか説明できます「を取得する必要があります最初にインストールされたときに読み込まれます。 –

+0

何がうまくいかないのですか? checkTablesExist()は何をしますか?それはすでに存在するテーブルを検出しましたか? –

+0

データがデータベースに取り込まれます checkTableExistメソッドは特定のデータベースにテーブルが存在するかどうかを確認します – Frankdf

答えて

1

あなたはデータベースのロックと同様のシステムを作ってみることができます。

最初にコードを実行すると、ファイルrun.lockが空であり、それは問題ではありません。その後、そのファイルが存在する場合はコードが実行されているかどうかをチェックします。コードを実行する必要があります。

DBにおけるこれらのテーブルは、コードを実行しない、存在する場合、/tmp

それとも、より良いようなもの、永続的な場所にファイルを作成しないように注意してください。

+0

そうでなければ、テーブルを作成した後に削除できるrun.lockファイルを作成できます。このファイルが存在する場合のみ、テーブル作成コードを実行してください。例えば。 if(file_exists( "run.lock")){テーブルを作成する} – daya

0

これはすべてあなたがしようとしていること、あなたの質問から見ることができることはあなたがmysqlデータテーブルをインストールしようとしていることです...これは正しいです、テーブルが存在するかどうかを確認してください...

あなたは全く違うものに基づいて、一度だけのコードを実行したい史上場合
<?php 
if (mysql_num_rows("show tables like `tablename`")!==1) { 

    // Install table 

} 
?> 

、データベースに依存しない、すなわち、あなたが最良のフラットファイリング使用します。

<?php 
if (file_exists("should-we-run.cfg") && file_get_contents("should-we-run.cfg")=="Y") { 

    // Execute code 
    file_put_contents("should-we-run.cfg","No"); 
    // OR 
    unlink("should-we-run.cfg"); 

} 
?> 
+0

他のコードを実行する前に 'should-we-run.cfg'ファイルをどのように作成する予定ですか?このファイルを作成するスクリプトを作成するだけでなく、そのファイルを再作成するためにスクリプトを再実行して問題のあるコードを再実行することもできます。 – Paul

+0

ファイルが存在しない場合はルールを反転し、コードを実行してファイルを作成してください(空の場合)。単にfile_exists()を使用してください。私たちが巨大なパフォーマンス要件を話さない限り、私は実際にオーバーヘッドの問題を見ていません...そして、ブーリアンのインデックスを決定するためにデータベースの設定テーブルを使用してください – Prof83

関連する問題