我有一种特殊情况,我的客户端需要(定期)将ms-access数据库导入他的mysql网站数据库(因此它是一个远程数据库)。
因为托管计划是共享托管(不是vps),所以唯一的方法是通过PHP通过SQL查询,因为我没有托管的ODBC支持。
我目前的想法是这个(显然客户端有MS-Windows O.S。):
我知道这不是最好的方法,所以我提出了一个问题,为这个问题创建一个不同的解决方法。客户已经说过他想继续使用他的ms-access数据库。
我遇到的最大问题是脚本只能持续30秒,这对于导入数据来说显然是一个问题。
答案 0 :(得分:1)
要绕过30秒的限制,请将数据导入到块中。这是一个粗略的想法:
if(!file_exists('upload.sql')) exit();
$max = 2000; // the maximum number you want to execute.
if(file_exists('progress.txt')) {
$progress = file_get_contents('progress.txt');
} else {
$progress = 0;
}
$file = file('upload.sql');
foreach($file as $current => $query) {
if($current < $progress) continue; // skip the ones we've done
if($current - $progress >= $max) break; // stop before we hit the max
mysql_query($query);
}
// did we finish the file?
if($current == count($file) - 1) {
unlink('progress.txt');
unlink('upload.sql');
} else {
file_put_contents('progress.txt', $current);
}