【发布时间】:2011-05-23 21:00:08
【问题描述】:
$databases = array();
$path = '/Path/To/Directory';
$main_link = mysqli_connect('localhost', 'USERNAME', 'PASSWORD');
$files = scandir($path);
$ignore_files = array();
foreach($files as $file)
{
if (!in_array($file, $ignore_files))
{
$database = substr($file, 0, strpos($file,'.'));
$databases[] = $database;
mysqli_query($main_link, "DROP DATABASE IF EXISTS $database") or die ("$database 1" . mysqli_error($main_link));
mysqli_query($main_link, "CREATE DATABASE $database") or die ("$database 2" .mysqli_error($main_link));
$db_link = mysqli_connect('localhost', 'USERNAME', 'PASSWORD', $database);
//In here a whole database dump with scheam + data is executed.
mysqli_multi_query($db_link, file_get_contents($path.'/'.$file)) or die ("$database 4" .mysqli_error($db_link));
}
}
当运行这个脚本时,它很快就完成了(返回到浏览器),但是在浏览器说它完成后它仍在运行查询。这是为什么呢?
【问题讨论】:
-
什么it仍在运行what,你怎么知道?
-
是的,我也想知道...查询不应该执行异步。甚至是多个查询 (?),因为它们也可以有结果。
-
@Dagon 也许他做了一个
SHOW PROCESSLIST...@Christop | grep mysql不会准确,因为mysql 守护进程和进程一直在运行。 -
也许,也许不是,这就是我问的原因:-)
-
我只是在各种 mysql 数据库上执行显示表,它们一直在增长(因为我的脚本创建表并填充数据)。脚本执行完成后,需要 2 分钟时间才能将数据填充到数据库中。