Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO中的大数据存储器_Php_Mysql_Pdo_Large Data - Fatal编程技术网

Php PDO中的大数据存储器

Php PDO中的大数据存储器,php,mysql,pdo,large-data,Php,Mysql,Pdo,Large Data,PDO看起来有点棘手,但我有一个很大的数据库,我得到了这个错误 Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 256 bytes) 使用时 fetchAll() 解决此问题的最佳方法是什么?您可以使用以下方法临时分配额外内存: ini_set('memory_limit', '750M'); 实际问题是PHP本身不是PDO本身。。。它正在创建的PHP数组太大。。。试试上面。。

PDO看起来有点棘手,但我有一个很大的数据库,我得到了这个错误

Fatal error: Allowed memory size of 100663296 bytes exhausted (tried to allocate 256 bytes)
使用时

fetchAll()

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

您可以使用以下方法临时分配额外内存:

ini_set('memory_limit', '750M');
实际问题是PHP本身不是PDO本身。。。它正在创建的PHP数组太大。。。试试上面。。。显然750米是很多,但你明白了

在php.ini中,您可能会很好,默认情况下,内存限制为128M。。。当脚本执行超过此值时,将导致出现错误

或者

(根据我的评论)-只获取您可以为用户显示的内容,即实现某种形式的分页

一个很好的组合是使用jQuery数据表和服务器端数据管道。也就是说,它将根据要求从数据库获取每页的数据

同时


确保您的模式已正确设计和规范化,而不仅仅是得到100个列

正如@Kemil Kokot所说,我正在寻找一个更好的解决方案。那么更好的解决方案是什么?要么允许使用更多内存,要么不要在PHP的数组中保存太多数据,就这么简单。更好的解决方案是确保只获取您可以轻松显示给用户的内容。用户是否要滚动1000行?:)。。。假设这是为了展示。这也会加快查询的运行速度。事实上,我知道这就是解决方案,但我只是想知道一个答案,为什么你否决了我,有什么原因吗?@itsme-你的问题可能被否决了,因为你要求一个超出内存限制的解决方案,但在评论中你实际上解释了为什么你会超过它。超过限制很容易修复,而为什么部分不容易修复。因为这个问题并没有强调PDO导致内存问题的问题,所以它对任何人都没有真正的用处,也不是问题的原因,只是结果。因此,这是一个非常糟糕的问题。另外,不知道为什么这个答案被否决了(而且只有一次),因为这是对原始问题的正确答案。我几乎不敢问-你的数据库有多大?如果你需要将整个数据库加载到PHP数组中。。你的应用程序的设计很可能有缺陷。增加允许PHP脚本使用的内存,如果您知道将获得的行数,或者只是重新考虑正在执行的功能,而不将所有内容加载到内存中,请尝试使用
SplFixedArray
。。。有多少列和字段类型/大小?如果是这样的话,你的桌子就需要正常化了!你在里面储存什么?我目前正在处理的数据库有几百万个条目,并且没有任何内存问题,尽管我承认我没有太多的条目。那时候数据库设计就不好了。