gpt4 book ai didi

php - 使用 PHP 将大型数据库转储为 JSON

转载 作者:可可西里 更新时间:2023-11-01 07:33:14 24 4
gpt4 key购买 nike

我正在处理的应用程序有一个小问题。该应用程序用作开发人员工具,用于将表从 MySQL 服务器中的数据库转储到开发人员使用 Unix curl 命令获取的 JSON 文件。到目前为止,我们一直在使用的数据库是相对较小的表(2GB 或更少),但最近我们进入了另一个测试阶段,该阶段使用完全填充的表(40GB+)并且我的简单 PHP 脚本中断了。这是我的脚本:

[<?php 

$database = $_GET['db'];

ini_set('display_errors', 'On');
error_reporting(E_ALL);

# Connect
mysql_connect('localhost', 'root', 'root') or die('Could not connect: ' . mysql_error());

# Choose a database
mysql_select_db('user_recording') or die('Could not select database');

# Perform database query
$query = "SELECT * from `".$database."`";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

while ($row = mysql_fetch_object($result)) {
echo json_encode($row);
echo ",";
}

?>]

我要问你的问题是,我可以做些什么来使这个脚本更好地处理更大的数据库转储。

最佳答案

这就是我认为的问题:

您正在使用 mysql_query。 mysql_query 在内存中缓冲数据,然后 mysql_fetch_object 只是从内存中获取数据。对于非常大的表,您只是没有足够的内存(很可能您将所有 40G 的行都放入一次调用中)。

改用mysql_unbuffered_query。有关更多信息,请参见 MySQL performance blog您可以在那里找到导致此行为的一些其他可能原因。

关于php - 使用 PHP 将大型数据库转储为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com