我正在使用从远程服务器调用文件的API。此文件大约为110,592字节(.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
答案 0 :(得分:0)
我不确定“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++;
}