PHP代码只能执行一次
问题描述:
我有一个php代码我只想执行一次,也就是说它应该在第一次安装时加载,第二次不应该执行。我试着用for
和if
的条件,但它不适合我。PHP代码只能执行一次
这是我的代码:
$table = self::checkTablesExist();
if(empty($table)) {
self::createTables();
self::createRootUser(self::$preflight_config);
if(self::$preflight_config->sample_data == 1) {
self::installSampleData();
}
}
答
你可以尝试做类似数据库锁的系统。
所以,第一次运行代码的时候你创建了一个文件run.lock
,空了,没关系,然后在每隔一个执行检查那个文件的存在,如果存在,代码已经运行,否则你应该运行代码。
务必小心,以创建一个永久位置的文件,而不是像/tmp
或者,也许更好,如果存在于DB这些表,不运行的代码。
+0
否则,您可以为run.lock文件提供一个可以在创建表时删除的安装文件。只有当这个文件存在时才执行你的表格创建代码。例如。 if(file_exists(“run.lock”)){create tables} – daya 2012-01-11 11:16:11
答
这一切都取决于你想要做什么,我可以从你的问题看是你想安装一个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");
}
?>
你能解释一下你的意思是“应该得到加载时它是第一次安装“? – 2012-01-11 06:29:58
什么不行? checkTablesExist()做什么?它检测到已经存在的表吗? – 2012-01-11 06:32:35
将数据填充到数据库中 checkTableExist方法检查特定数据库中是否存在表 – Frankdf 2012-01-11 06:51:07