Adakah terdapat cara yang baik untuk menggunakan PHP untuk memproses fail SQLite yang sangat besar (berpuluh-puluh gigabait)?
PHP中文网2017-05-16 13:04:33
0
9
657
Apakah cara yang baik untuk menggunakan PHP untuk memproses fail SQLite yang sangat besar (berpuluh-puluh gigabait) Ia baru sahaja mati apabila memprosesnya~~
Fail sebesar itu tidak boleh diproses oleh PHP Untuk memproses fail, PHP mesti membacanya terlebih dahulu ke dalam memori, dan memori yang boleh digunakan oleh setiap skrip adalah berkaitan dengan had_memori dalam fail konfigurasi PHP. Selagi ingatan anda cukup besar, anda boleh menetapkannya kepada tidak terhad dan menggunakan memori maksimum sistem.
Penyelesaian yang disyorkan ialah potong fail kepada fail kecil dahulu, gunakan program shell seperti sed untuk memotong fail kepada beberapa fail kecil mengikut saiz tertentu (saiz ditentukan mengikut saiz memori PHP anda), dan kemudian proses ia dengan PHP.
Baca baris demi baris, PHP mempunyai fungsi ini, ia membaca 3 baris pada satu masa, tetapi SQLite adalah pangkalan data tempatan, dan membaca adalah masalah pemandu sekali gus
Data hendaklah dipindahkan ke MYSQL dan kemudian diberikan kepada PHP untuk membaca dan menulis. SQLite pada asalnya adalah pangkalan data fail kecil dengan keupayaan rendah untuk mengendalikan data yang besar.
Terkejut! Untuk jumlah data yang begitu besar, sqlite masih digunakan. Selain itu, jika anda membaca berpuluh-puluh gigabait ke dalam memori pada satu masa, melainkan jika ingatan anda benar-benar mempunyai berpuluh-puluh gigabait, ia pasti akan memecahkan ingatan. Adalah disyorkan untuk mencuba memisahkan pangkalan data ini atau menukarnya kepada jenis pemprosesan pangkalan data lain.
Pemprosesan teks PHP tidak sesuai dan sangat perlahan. Penyelesaian pemprosesan selepas memasuki mysql boleh dilaksanakan, tetapi ia lebih memakan masa.
Saya tidak faham sqlite, tetapi pasti sukar untuk memproses terus fail yang begitu besar. Tetapi ada idea umum. Hanya membongkar. Ikut perpustakaan. Tonton atau sesuatu.
Fail sebesar itu tidak boleh diproses oleh PHP Untuk memproses fail, PHP mesti membacanya terlebih dahulu ke dalam memori, dan memori yang boleh digunakan oleh setiap skrip adalah berkaitan dengan had_memori dalam fail konfigurasi PHP. Selagi ingatan anda cukup besar, anda boleh menetapkannya kepada tidak terhad dan menggunakan memori maksimum sistem.
Penyelesaian yang disyorkan ialah potong fail kepada fail kecil dahulu, gunakan program shell seperti sed untuk memotong fail kepada beberapa fail kecil mengikut saiz tertentu (saiz ditentukan mengikut saiz memori PHP anda), dan kemudian proses ia dengan PHP.
Baca baris demi baris, PHP mempunyai fungsi ini, ia membaca 3 baris pada satu masa, tetapi SQLite adalah pangkalan data tempatan, dan membaca adalah masalah pemandu sekali gus
Data hendaklah dipindahkan ke MYSQL dan kemudian diberikan kepada PHP untuk membaca dan menulis. SQLite pada asalnya adalah pangkalan data fail kecil dengan keupayaan rendah untuk mengendalikan data yang besar.
Terkejut! Untuk jumlah data yang begitu besar, sqlite masih digunakan.
Selain itu, jika anda membaca berpuluh-puluh gigabait ke dalam memori pada satu masa, melainkan jika ingatan anda benar-benar mempunyai berpuluh-puluh gigabait, ia pasti akan memecahkan ingatan.
Adalah disyorkan untuk mencuba memisahkan pangkalan data ini atau menukarnya kepada jenis pemprosesan pangkalan data lain.
Pemprosesan teks PHP tidak sesuai dan sangat perlahan. Penyelesaian pemprosesan selepas memasuki mysql boleh dilaksanakan, tetapi ia lebih memakan masa.
Rujukan Gunakan untuk menyemak
Saya tidak faham sqlite, tetapi pasti sukar untuk memproses terus fail yang begitu besar. Tetapi ada idea umum. Hanya membongkar. Ikut perpustakaan. Tonton atau sesuatu.
Memandangkan ia adalah fail sqlite, cuma klik Pangkalan Data Baca->Proses->Storan PHP boleh menggunakan sqlite secara lalai.
Tukar sqlite kepada Mysql, kemudian optimumkan indeks, dan sepatutnya tiada masalah.
Sila rujuk produk ini