【发布时间】:2012-12-20 10:20:55
【问题描述】:
换算成 GB,好像是 2 GB。
但我现在在 32 位 Windows 上运行,我可以拥有比这更大的文件。
那么为什么 PHP 将这个数字限制为 2147483647 呢?如果 Windows 可以处理更大的数字,PHP 不应该也可以吗?
【问题讨论】:
-
受32位安装限制。在此处查看更多信息:Is there any way to maximize PHP_INT_MAX?
换算成 GB,好像是 2 GB。
但我现在在 32 位 Windows 上运行,我可以拥有比这更大的文件。
那么为什么 PHP 将这个数字限制为 2147483647 呢?如果 Windows 可以处理更大的数字,PHP 不应该也可以吗?
【问题讨论】:
2147483647 是您可以用 32 位存储的最高有符号数。 PHP 以这种方式存储它的数字,因为它们就是这样存储在您的计算机中的。再高一点,数学和一切都会变得复杂得多。 Windows 也将使用 32 位数字。我不确定它如何处理大于 2 GB 的文件,但我猜在这些情况下它会以某种方式解决它,并且代码更复杂。
【讨论】:
2,147,483,647 是可以存储在 32 位中的最大数字。您的处理器只有 32 个插槽来填充位,比这更大的数字将更复杂,并且需要更多的开销来计算。 相反,您可以拥有的最小数字是 -2,147,483,648,这也是因为没有更小的数字可以存储在 32 位中。
如果想在 32 位系统上计算更大的数字,则必须解决此限制。当然有一些变通方法,但在一般的 web 应用上不太可能需要。
【讨论】:
2,147,483,647 是有符号 4 字节值的最大值 231-1。您可能喜欢使用 long,即 263-1 = 9,223,372,036,854,775,807。
【讨论】: