Heim >Backend-Entwicklung >PHP-Tutorial >Wie verarbeitet man große Zeichenfolgen, ohne die Speichergrenzen zu überschreiten?
Manipulieren von Zeichenfolgen, die die Speichergrenzen überschreiten
Beim Umgang mit übermäßig großen Zeichenfolgen, wie im Fall einer CSV-Datei mit 30 Millionen Zeichen, treten Speicherzuordnungsfehler auf entstehen kann. Um dieses Problem zu beheben, laden Sie nicht die gesamte Zeichenfolge in den Speicher. Verwenden Sie stattdessen alternative Strategien, um die Daten zu verarbeiten, ohne die Speichergrenzen zu überschreiten.
Alternative Ansätze:
Beispielimplementierung mit Stream Wrapper:
class MyStream { protected $buffer; function stream_open($path, $mode, $options, &$opened_path) { // Has to be declared, it seems... return true; } public function stream_write($data) { $lines = explode("\n", $data); $lines[0] = $this->buffer . $lines[0]; $nb_lines = count($lines); $this->buffer = $lines[$nb_lines-1]; unset($lines[$nb_lines-1]); var_dump($lines); // Process data as needed echo '<hr />'; return strlen($data); } } // Register custom stream stream_wrapper_register("test", "MyStream"); // Configure curl with target "file" $fp = fopen("test://MyTestVariableInMemory", "r+"); curl_setopt($ch, CURLOPT_FILE, $fp); // Data will be sent directly to stream curl_exec($ch); curl_close($ch); // Don't forget to close file / stream fclose($fp);
Diese Strategie ermöglicht Ihnen die Verarbeitung die Daten inkrementell, sobald sie eintreffen, wodurch Probleme bei der Speicherzuweisung vermieden werden.
Das obige ist der detaillierte Inhalt vonWie verarbeitet man große Zeichenfolgen, ohne die Speichergrenzen zu überschreiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!