gpt4 book ai didi

php - mysql_unbuffred_query 不工作

转载 作者:行者123 更新时间:2023-11-29 02:30:01 24 4
gpt4 key购买 nike

我有一个 php 文件,它将从 mysql_query() 检索到的结果编码为 json 格式。我收到的数据很大,即接近 200,000 个元组,其中每个元组有接近 10 个 varchars。早些时候我得到了一个异常,比如“允许的 67108864 字节的内存大小用完了”。然后我在互联网上搜索,有人引用 mysql_unbuffered_query 是解决方案。我也试过了,但我又遇到了同样的错误。我们如何在 php 中处理如此大的数据?

Increasing the memory is also not an option since I have a shared hosting account.

这是我用来检索结果并将其编码为 json 的代码。

$result=mysql_unbuffered_query("Some query which gives large data");
$res=array();
if($result)
{
while($r = mysql_fetch_assoc($result))
{
$rows[] = $r;
}
print json_encode($rows);

}
else
{
echo mysql_error();
}

此类问题的解决方法是什么?

最佳答案

这就是我的想象,只需添加您的查询等。

// Must be zero to get 1st record
$limit = 0;
// Determine how many you want to pull at a time
$offset = 10;
// Run count query to get this value
$total = 10000; // <- number of records needing to be pulled
for ($limit; $limit <= $total; $limit + $offset) {
// Run query here and pump results into an array
echo "Total: ".$total."<br>";
echo "offset: ".$offset."<br>";
echo "limit: ".$limit."<br>";
}

警告:确保您的总数可以被您的偏移量整除,否则您将丢失记录,例如:

$offset = 19;
$total = 10000;

将最后一次调用输出为:

Total: 10000
offset: 19
limit: 9994


编辑:

尝试使用以下模板,看看是否有帮助,当我运行原始答案时,我在 for loop 我遇到了同样的内存错误,但接下来的一点对我有用。

$offset = 10;
$total = 1000000;
$array = array();
for ($limit = 0; $limit <= $total; $limit++) {
// Your code here
$array[$limit] = $offset;
// Keep the following line
$limit = ($limit - 1) + $offset;
}
print json_encode($array);

关于php - mysql_unbuffred_query 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647941/

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