使用php数组的建议?

使用php数组的建议?,php,arrays,performance,Php,Arrays,Performance,假设我在表中有100k条记录,在从表中获取这些记录之后,我将其推送到一个数组中进行一些计算,然后将它们发送到服务器进行进一步处理 我已经用(1k)条记录测试了这个场景,它工作得很好,但是担心是否有性能问题,因为计算和从数据库获取记录的页面每2分钟运行一次 我的问题是,我可以将数组用于超过200万条记录吗?数组可以容纳多少数据没有内存,限制是服务器内存/PHP内存限制 为什么要将10万条记录推入一个数组?你知道数据库有排序和限制的原因 数组可以容纳多少数据没有内存,限制是服务器内存/PHP内存限制

假设我在表中有100k条记录,在从表中获取这些记录之后,我将其推送到一个数组中进行一些计算,然后将它们发送到服务器进行进一步处理

我已经用(1k)条记录测试了这个场景,它工作得很好,但是担心是否有性能问题,因为计算和从数据库获取记录的页面每2分钟运行一次


我的问题是,我可以将数组用于超过200万条记录吗?

数组可以容纳多少数据没有内存,限制是服务器内存/PHP内存限制


为什么要将10万条记录推入一个数组?你知道数据库有排序和限制的原因

数组可以容纳多少数据没有内存,限制是服务器内存/PHP内存限制

为什么要将10万条记录推入一个数组?你知道数据库有排序和限制的原因

假设我的表中有100k条记录,在从表中获取这些记录之后,我将其推送到带有一些过滤器的数组中

过滤器?您不能只编写一个实现这些过滤器的查询吗?数据库(取决于供应商)不仅仅是一个数据存储,它还可以进行计算,大多数情况下,它比将数据传输到PHP并在那里进行计算要快得多。如果你有一个数据库,比如说PostgreSQL,你可以用plpgsql做任何你想做的事情

假设我的表中有100k条记录,在从表中获取这些记录之后,我将其推送到带有一些过滤器的数组中

过滤器?您不能只编写一个实现这些过滤器的查询吗?数据库(取决于供应商)不仅仅是一个数据存储,它还可以进行计算,大多数情况下,它比将数据传输到PHP并在那里进行计算要快得多。如果你有一个数据库,比如说PostgreSQL,你可以用plpgsql做任何你想做的事情

我的问题是,我可以将数组用于200多万条记录吗

是的,在PHP中,200万个数组条目不是数组的限制。数组限制取决于PHP可用的内存

ini_set('memory_limit', '320M');
$moreThan2Million = 2000001;
$array = range(0, $moreThan2Million);
echo count($array); #$moreThan2Million
你写道:

页面已安排在2分钟后运行,因此我担心性能问题

以及:

但我需要获取所有数据,而不是一次获取100个,然后将它们发送到服务器进行进一步处理

阵列操作的性能取决于处理能力。有了足够快的计算机,你就不会遇到任何问题。但是,请记住,PHP是一种解释语言,因此比编译的二进制文件慢得多

如果需要每2分钟运行一次相同的脚本,但脚本的运行时间大于2分钟,则可以将脚本执行分布到多台计算机上,这样一个进程就不会占用另一个进程的CPU和内存资源,并且可以在另一个进程在另一个机器上运行的同时完成工作

编辑


回答很好,但是如果服务器处理器和RAM没有问题,您可以写下您的考虑,关于脚本需要多长时间才能完成

这取决于阵列的大小、每个条目所需的处理量(相对于阵列的总体大小)以及处理器的功率和RAM的数量。所有这些都没有明确的问题,所以我可以明确地说,我会考虑这个未指定的。您需要自己测试这一点,并为您的应用程序构建度量标准


我有10GB内存和8个以上的处理器

例如,您可以对1、10、100、1000、10000、100000和100万个条目进行粗略的度量,以查看您的(未指定的)脚本在该计算机上的扩展情况


我正在将此数组发送到另一个页面进行进一步处理

度量以及您在计算机之间发送的数据量以及您有多少带宽可用于进程间的有线通信

我的问题是,我可以将数组用于200多万条记录吗

是的,在PHP中,200万个数组条目不是数组的限制。数组限制取决于PHP可用的内存

ini_set('memory_limit', '320M');
$moreThan2Million = 2000001;
$array = range(0, $moreThan2Million);
echo count($array); #$moreThan2Million
你写道:

页面已安排在2分钟后运行,因此我担心性能问题

以及:

但我需要获取所有数据,而不是一次获取100个,然后将它们发送到服务器进行进一步处理

阵列操作的性能取决于处理能力。有了足够快的计算机,你就不会遇到任何问题。但是,请记住,PHP是一种解释语言,因此比编译的二进制文件慢得多

如果需要每2分钟运行一次相同的脚本,但脚本的运行时间大于2分钟,则可以将脚本执行分布到多台计算机上,这样一个进程就不会占用另一个进程的CPU和内存资源,并且可以在另一个进程在另一个机器上运行的同时完成工作

编辑


回答很好,但是如果服务器处理器和RAM没有问题,您可以写下您的考虑,关于脚本需要多长时间才能完成

这取决于阵列的大小、每个条目所需的处理量(相对于阵列的总体大小)以及处理器的功率和RAM的数量。所有这些都没有明确的问题,所以我可以明确地说,我会考虑这个未指定的。您需要自己测试这一点,并为您的应用程序构建度量标准


我有10GB内存和8个以上的处理器

例如,您可以对1、10、100、1000、10000、100000和100万个条目进行粗略的度量,以查看您的(未指定的)脚本在该计算机上的扩展情况


我正在将此数组发送到另一个页面进行进一步处理

度量以及