我正在阅读MySQL数据库,其中包含一条返回187,000条记录的查询,我正在将数据写入平面文件。它只是停止在15,000条记录到35,000条记录之间没有任何错误。
我想也许数据库连接超时了所以我开始用LIMIT一次拉出10,000条记录,但它仍然会发生。所以我想它是浏览器或PHP超时。这是我的代码。如果有更好的方法,我完全可以听到。
$sql->Query($stype.$search);
$checkrows = $sql->rows;
if ($checkrows > 0){
$fh = fopen($listname, 'w');
for ($i = 0; $i < $sql->rows; $i++) {
$sql->Fetch($i);
$email .= $sql->data[1]."\n";
fwrite($fh, $email);
$cot++;
echo $cot."-".$sql->data[1]."<br>";
}
fclose($fh);
}
答案 0 :(得分:1)
如果是超时时间,请尝试设置set_time_limit(0)。
答案 1 :(得分:1)
这不是PHP中的说法,但您可以使用MySQL轻松地将数据库导出为平面文件格式。使用像这样的查询:
SELECT email FROM database.table
INTO OUTFILE '/path/to/file/foo.txt'
LINES TERMINATED BY '\n';
但是,这将写入运行MySQL的同一台服务器。您也可以使用MySQL命令行客户端在本地写入来执行类似操作:
mysql -u user --password=mypass \
-e "SELECT email FROM database.table" \
-B --skip-column-names > foo.txt
答案 2 :(得分:0)
添加set_time_limit(600);到顶部!你的脚本超时了。
答案 3 :(得分:0)
我的错误是这行代码:echo $email .= $sql->data[1]."\n";
应该是:echo $email = $sql->data[1]."\n";