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


How to read files bigger than PHP_INT_MAX in php?

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

我尝试了在 http://php.net/manual/en/function.fseek.php#112647 给出的功能

但这没有用。它最多只能读取2147483647的字节PHP_INT_MAX。我尝试围绕这个数字进行搜索,所以我很确定这是边界。

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

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

问候约翰

不可能

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

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

尝试具有多个搜索的解决方法(甚至在 php.net 手动上被点赞)在我的系统上不起作用。相反,他们将文件指针放在PHP_MAX_INT下的不同位置。

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

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