如何在PHP中读取大于PHP_INT_MAX的文件?

如何在PHP中读取大于PHP_INT_MAX的文件?,php,performance,types,32bit-64bit,Php,Performance,Types,32bit 64bit,我正在使用Win7、64位和XAMPP安装(ApacheFriends XAMPP版本5.6.3) 我尝试了在上给出的函数 但那没用。 它最多只能读取字节PHP_INT_MAX,即2147483647。我试着寻找这个数字,所以我很确定这就是界限 有人说这取决于php内部使用的数据类型。 在哪里可以找到有关php安装中使用的数据类型的信息 如果xampp安装目录是“+PHP5.6.3(VC11 X86 32位线程安全)+PEAR”,那么这就是readme.txt中的答案吗 John您好使用32位P

我正在使用Win7、64位和XAMPP安装(ApacheFriends XAMPP版本5.6.3)

我尝试了在上给出的函数

但那没用。 它最多只能读取字节PHP_INT_MAX,即2147483647。我试着寻找这个数字,所以我很确定这就是界限

有人说这取决于php内部使用的数据类型。 在哪里可以找到有关php安装中使用的数据类型的信息

如果xampp安装目录是“+PHP5.6.3(VC11 X86 32位线程安全)+PEAR”,那么这就是readme.txt中的答案吗


John您好

使用32位PHP构建无法搜索(PHP_MAX_INT+8192)
(应该可以使用64位php构建,但我还没有尝试过。)

一旦寻找到最大可能的位置,人们仍然可以从那里出发,但不可能再进一步寻找


在我的系统上,尝试使用多个搜索的变通方法(甚至在php.net手册中被升级)是行不通的。相反,他们将文件指针放在PHP_MAX_INT下的不同位置。

64位版本的PHP7工作正常,它看起来稳定,不像5.6版本那样是“实验性的”。如果你有能力升级,这是你最好的选择。处理一些不向后兼容的更改需要一些工作,比如错误处理


顺便说一句,如果您试图在32位构建中处理几乎任何大于2GB的内容,您将得到意外的(中断的)脚本。即使将任何php.ini变量(如memory_limit)设置为大于2GB,也可能会产生意外的结果。

安装x64版本的php,因为您使用的是64位系统?在32位系统上,PHP_MAX_INT是
2147483647
,而在64位系统上,它是
9223372036854775807
。@Cyclone:这不是答案。我写了一篇新文章,因为php代码中有一个bug或错误的优化。