尝试做一件非常简单的事情:
//connecting to remote host
$db = new mysqli($host, $login, $pass, $dbName) or die('cant connect to db');
//table count = 46 644 886 rows
$result = $db->query("SELECT f FROM t") or die($db->error); //no error
echo 'alert!';
“警报”文字永远不会出现!后来的脚本使用所有RAM和系统杀死它。
看起来mysqli查询尝试获取内存中的所有行。我不明白,因为只应返回迭代器。
答案 0 :(得分:1)
1)字段和表是保留名称。如果你"清洁"这个用于张贴,它太干净了。考虑发布实际查询和一些示例数据。只是不要发布密码,IP或用户名。
2)尝试使用一个小限制的查询(即:添加"限制100"到查询结尾)。增加限制直到崩溃。看看屏障的位置。
3)我怀疑你发现在php或web服务器或mysql中都存在障碍,超出这个障碍需要虚拟内存并且系统速度下降到如此之低你永远不会得到答案。