Я запускаю Windows 7 - 64-разрядный, с последней версией XAMPP, которая имеет 32-битную версию PHP.PHP тихо оптимизирует последовательные fseek-команды в одну команду fseek?
На тестировании http://php.net/manual/en/function.fseek.php#112647 для очень большого файла (больше, чем PHP_MAX_INT 2147483647) Теперь я вполне уверен, что последовательно следующие fseeks суммируются перед казнью на filepointer.
У меня есть два вопроса:
Могу ли я разбить это суммируя с разумными средствами (или только с обходным, указанной в приведенной выше ссылке)?
Является ли это агрегацией в PHP (как я предполагаю, хотя я не знаю, где на PHP) или в Windows 7?
Ответ себя: Попытка двух обходных путей с несколькими изыскивает не работает на моей системе. Вместо этого они помещают filepointer в разные позиции под PHP_MAX_INT. (32-разрядная версия PHP может только стремиться к PHP_MAX_INT + 192. Чтение оттуда по-прежнему возможно, но я не знаю, как далеко.)
Поэтому вопрос устарел для моего конкретного случая, а 32 -битный PHP может искать только PHP_MAX_INT + 8192, что бы вы ни делали. I оставьте вопрос, потому что два человека проголосовали за него, и может быть заинтересован в общем ответе.
Я подал отчет об ошибке здесь:
https://bugs.php.net/bug.php?id=69213
Результат: С 64-битной PHP сборки он может работать, но я не пробовал.
Примечание. Я не пытался использовать SplFileObject, как было предложено кем-то еще, поскольку я доверяю php-manual, что SplFileObject должен быть просто слоем над обычными командами seek и etc. И я уже перешел на perl для этой конкретной задачи. (Который даже парень на стороне ошибки php понял.) Я не буду разворачивать 64-битную сборку php, если она не является основной. И я не полностью переношусь на perl, просто просматривая и пишу пару очень больших файлов. (И мне очень сложно увидеть какое-либо концептуальное преимущество в SplFileObject. Хотя сопровождающие говорят об этом «с энтузиазмом».) – John