Ich schrieb ein Programm zum Generieren großer .SQL-Dateien zum schnellen Auffüllen sehr großer Datenbanken. Ich habe es in PHP geschrieben. Als ich mit der Codierung begann, benutzte ich fopen() und fwrite(). Wenn Dateien zu groß wurden, würde das Programm die Kontrolle an die Shell zurückgeben und die Datei wäre unvollständig.Ist fopen() vom Dateisystem begrenzt?
Leider bin ich mir nicht sicher, wie groß 'zu groß' ist. Ich denke, es könnte um 4GB gewesen sein.
Um dieses Problem zu lösen, hatte ich die Datei echo zu stdout. Ich leitete es um, als ich das Programm wie folgt anrief:
[[email protected]]$ php generatesql.php > myfile.sql
Welche funktionierte wie ein Charme. Meine Ausgabedatei endete ungefähr 10 GB.
Meine Frage ist also: Sind fopen() und fwrite() durch das Dateisystem in Bezug auf die begrenzt, wie groß eine Datei, die sie erzeugen können? Wenn ja; Ist das eine Einschränkung von PHP? Passiert das auch in anderen Sprachen?
einige Code anzeigen ... wahrscheinlich es ist, weil Sie auf einem 32-Bit-Betriebssystem sind, und Sie sind overflo wing das int-Limit auf die Dateiposition (aber das ist nur Spekulation, wenn Sie nicht entweder 'ftell' oder' fseek' genannt haben) ... – ircmaxell
Wird Code zeigen, sobald ich aus dem Büro nach Hause komme. – KeatsKelleher
@ircmaxell: fseek() wurde am Ende der Ausführung aufgerufen. – KeatsKelleher