所以我有一个用户名格式的平面文件数据库:$SHA$1010101010101010$010110010101010010101010100101010101001010:255.255.255.255:1342078265214
每条记录在一个新行上......大约 5000 多行......我想将它导入到一个 mysql 表中。通常我会使用 phpmyadmin 和“文件导入”来执行此操作,但现在我想通过使用 php 通过 ftp 下载数据库然后清理现有表数据并上传更新的数据库来自动化此过程。
id(AUTH INCREMENT) | username | password | ip | lastlogin
我在下面得到的脚本大部分都有效.. 虽然 php 会产生一个错误:“PHP 致命错误:超过 30 秒的最大执行时间”我相信我可以增加这个时间,但在远程服务器上我怀疑我'将被允许,所以我需要找到更好的方法来做到这一点。
在该超时之前,只有大约 1000 条记录会被插入到数据库中......
我正在使用的代码如下.. 我现在会说我不是 php 的专业人士,这主要是收集起来并拼凑在一起的。我正在寻找一些帮助来提高效率,因为我听说做这样的插入是很糟糕的。这听起来真的很糟糕,因为当我在本地电脑上运行这个脚本时会刮很多磁盘。我的意思是为什么它要杀死硬盘来完成这样一个看似简单的任务。
<?php
require ('Connections/local.php');
$wx = array_map('trim',file("auths.db"));
$username = array();
$password = array();
$ip = array();
$lastlogin = array();
foreach($wx as $i => $line) {
$tmp = array_filter(explode(':',$line));
$username[$i] = $tmp[0];
$password[$i] = $tmp[1];
$ip[$i] = $tmp[2];
$lastlogin[$i] = $tmp[3];
mysql_query("INSERT INTO authdb (username,password,ip,lastlogin) VALUES('$username[$i]', '$password[$i]', '$ip[$i]', '$lastlogin[$i]') ") or die(mysql_error());
}
?>