Ich verwende Windows 7 - 64 Bit, mit der neuesten XAMPP-Version, die eine 32-Bit-PHP-Version hat.Optimiert PHP stillschweigend aufeinanderfolgende fseek-Befehle in einem fseek-Befehl?
In einem Test http://php.net/manual/en/function.fseek.php#112647 für eine sehr große Datei (größer als PHP_MAX_INT 2147483647) Ich bin jetzt ziemlich sicher, dass die nacheinandere folgende fseeks vor auf dem Dateizeiger ausgeführt aufsummiert werden.
Ich habe zwei Fragen:
Kann ich diese zusammenfassend mit angemessenen Mitteln brechen (oder nur mit der in der Verbindung oben genannte Problemumgehung)?
Ist diese Aggregation in PHP passiert (wie ich vermute, obwohl ich nicht weiß, wo in PHP) oder in Windows 7?
Answering mir: Der Versuch, zwei Lösungen mit mehreren sucht nicht auf meinem System nicht funktioniert. Stattdessen setzen sie den Filepointer unter PHP_MAX_INT auf verschiedene Positionen . (32-Bit-PHP kann nur versuchen, bis zu PHP_MAX_INT + 8192. Lesen von dort noch möglich ist, aber ich weiß nicht, wie weit.)
Deshalb ist die Frage nach meinem speziellen Fall veraltet ist, wie 32 -Bit PHP kann nur bis zu PHP_MAX_INT + 8192, was auch immer Sie tun. I lassen Sie die Frage, weil zwei Leute wählten es, und könnte in einer allgemeinen Antwort interessiert sein.
Ich legte hier einen Bug-Report:
https://bugs.php.net/bug.php?id=69213
Ergebnis: Mit einer PHP-Version 64-bit es funktionieren kann, aber ich habe es nicht ausprobiert.
Hinweis: Ich habe SplFileObject nicht wie von jemand anderem vorgeschlagen getestet, da ich dem PHP-Handbuch vertraue, dass SplFileObject nur eine Ebene über den üblichen Suchbefehlen usw. sein sollte. Und ich bin bereits für diese spezielle Aufgabe nach Perl migriert. (Was selbst der Typ auf der PHP-Seite versteht.) Ich werde keinen 64-Bit-PHP-Build bereitstellen, solange es nicht Mainstream ist. Und ich wandle nicht komplett auf Perl um, nur um ein paar sehr große Dateien zu lesen und zu schreiben. (Und es ist sehr schwierig für mich, einen konzeptuellen Vorteil in SplFileObject zu sehen. Obwohl die Betreuer als "enthusiastisch" bezeichnet werden.) – John