Rumah > Artikel > pembangunan bahagian belakang > Bagaimana Memproses Rentetan Besar Tanpa Melebihi Had Memori?
Memanipulasi Rentetan Melebihi Had Memori
Apabila mengendalikan rentetan yang terlalu besar, seperti dalam kes fail CSV 30 juta aksara, ralat peruntukan memori boleh timbul. Untuk menangani isu ini, elakkan daripada memuatkan keseluruhan rentetan ke dalam memori. Sebaliknya, gunakan strategi alternatif untuk memproses data tanpa melebihi had memori.
Pendekatan Alternatif:
Contoh Pelaksanaan Menggunakan 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);
Strategi ini membolehkan anda memproses data secara berperingkat apabila ia tiba, mengelakkan isu peruntukan memori.
Atas ialah kandungan terperinci Bagaimana Memproses Rentetan Besar Tanpa Melebihi Had Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!