我有一个我想要只执行一次的PHP代码,就是它应该在第一次安装时加载,第二次它不应该执行。我尝试使用for
和if
条件,但它对我不起作用。
这是我的代码:
$table = self::checkTablesExist();
if(empty($table)) {
self::createTables();
self::createRootUser(self::$preflight_config);
if(self::$preflight_config->sample_data == 1) {
self::installSampleData();
}
}
答案 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");
}
?>