PHP代码只执行一次

时间:2012-01-11 06:21:18

标签: php

我有一个我想要只执行一次的PHP代码,就是它应该在第一次安装时加载,第二次它不应该执行。我尝试使用forif条件,但它对我不起作用。

这是我的代码:

$table = self::checkTablesExist();

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

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

2 个答案:

答案 0 :(得分:1)

您可以尝试制作类似于数据库锁的系统。

因此,第一次运行代码时,你创建一个文件run.lock,空,无所谓,然后在每个其他执行检查该文件的存在,如果它存在,代码已经运行,否则你应该运行代码。

注意在永久位置创建文件,而不是/tmp

或者更好的是,如果数据库中存在这些表,请不要运行代码。

答案 1 :(得分: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");

}
?>