PHP fatal error : Out of memory - Memory Allocation Strategies for Big Data

标签 php mysql memory-management memory-leaks out-of-memory

我正在使用一个从远程服务器调用文件的 API。该文件大约有 110,592 字节 (0.11 MB)。

但是,我有一个循环贯穿 $data 的每次迭代,并且它偶尔会返回以下错误:

PHP Fatal error:  Out of memory (allocated 97255424) (tried to allocate 87 bytes)

我不知道为什么这偶尔会返回这个。我在另一个页面上有非常相似的代码,它通常可以解决零问题。

$json = file_get_contents('https://api.com/?limit=200');
$data = json_decode($json);

$x = 0;
while($x < sizeof($data)) {
    $Id = $data[$x]->id;
    $Name = $data[$x]->name; //ERROR LINE
    $price = $data[$x]->price_usd;
    $time = $data[$x]->last_updated; //SOMETIMES ERROR LINE
    $sql = "INSERT INTO table (Id, name, price, time) 
            VALUES ('".$Id."', '".$Name."', '".$price."', '".$time."')";

    if ($conn->query($sql) === TRUE) {
        //echo "New record created successfully<br><br><br>";
    } else {
        die("Error: " . $sql . "<br>" . $conn->error."<br><br><br>");
    }

    $x = $x+1;
}

任何关于这方面的建议都会很棒。 (我还简化了代码,循环中变量多了,所有变量都进入了sql表)

编辑:我的 php 信息设置为:memory_limit 1024M

最佳答案

我不确定“api.com”(您正在交谈的 api)允许您做什么,但您应该能够减少每个循环必须处理的数据集。也许是这样的:

$pagesize = 100;
$pagenumber = 0;
while $data {
   $data = file_get_contents('https://api.com/?limit='.$pagesize.'&limit-'.$pagenumber);
   ....do all the stuff
   $pagenumber++;
}

关于PHP fatal error : Out of memory - Memory Allocation Strategies for Big Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288426/

相关文章:

php - 如何捕捉 Marz/März/März?

php - Dart 与 PHP 代码中的不同哈希结果

mysql - 如何在 SQL 的 3 个特定列中输入 3 个词并搜索这些词?

php - 有没有办法在不到 2 分钟的时间内从 txt 文件更新 12000 多行?

c - 为什么 C 中没有 "memsize"返回使用 malloc 在堆中分配的内存块的大小?

php - Laravel - 2xHasMany 关系另一个表

php - 使用 mysql 查询从关系表中搜索多个类别和行业

php - 从 PHPMYADMIN 导出和导入数据

ios - PNG 图像从未解除分配

c - 内存分配和更改值