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

时间:2015-03-10 01:57:10

标签: php performance types 32bit-64bit

我使用Win 7,64位和XAMPP安装(ApacheFriends XAMPP版本5.6.3)。

我尝试了http://php.net/manual/en/function.fseek.php#112647

中给出的功能

但那并没有奏效。 它只能读取字节PHP_INT_MAX,即2147483647.我尝试寻找这个数字,所以我很确定这是边界。

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

这是readme.txt中的答案,如果xampp安装目录:它说" + PHP 5.6.3(VC11 X86 32位线程安全)+ PEAR"?

问候约翰

2 个答案:

答案 0 :(得分:1)

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

一旦寻求最大可能的位置,人们仍然可以从那里开始,但是不可能进一步寻求。

尝试使用多次搜索的解决方法(甚至在php.net-manual上进行了讨论)并没有在我的系统上运行。相反,他们将文件指针放在PHP_MAX_INT下的不同位置。

答案 1 :(得分:1)

64位版本的PHP 7工作,它看起来很稳定,并且它不是"实验"像5.6版本一样。如果您有升级能力,这是您最好的选择。处理一些非向后兼容的更改(如错误处理)需要一些工作。

作为旁注,如果您尝试在32位版本上处理几乎任何大于2GB的内容,您将获得意外(损坏)的脚本。即使设置任何像memory_limit大于2GB的php.ini变量也可能会产生意外结果。