python - Bagaimana untuk menyelesaikan masalah apabila penyemak imbas separuh tersekat apabila mengeksport excel dengan lebih daripada 10,000 item?
習慣沉默2017-06-14 10:49:44
0
13
2047
Keperluan perniagaan kadangkala memerlukan puluhan ribu item untuk dieksport Bolehkah saya menggunakan ular sawa untuk memprosesnya Bagaimana jika saya menggunakan ular sawa untuk memprosesnya?
Tugas pelayan yang memakan masa seperti ini tidak sepatutnya direka sebagai 浏览器->同步->服务器 seharusnya dalam bentuk tugasan tak segerak:
Pelayar: Saya mahukan Excel, sila jana untuk saya dahulu
Pelayan: OK, misi telah bermula
Pelayar: Biar saya muat semula dan lihat (anda boleh menggunakan sambungan yang panjang), ia nampaknya telah selesai Berikan saya URL (URL boleh ditunjukkan dalam tugasan, tidak perlu mendapatkannya lagi), saya mahu untuk memuat turunnya
Gunakan asynchronous atau multi-process, penyemak imbas menyerahkan tugas, menggesa bahawa tugasan sedang diproses, skrip berbilang proses latar belakang perlahan-lahan memprosesnya, dan apabila selesai, menolak mesej ke penyemak imbas untuk menggesa pengguna bahawa operasi eksport telah siap dan boleh dimuat turun. Mesej tolak penyemak imbas: http://www.workerman.net/web-... Rangka kerja berbilang proses: http://doc3.workerman.net/ins...
Lebih sepuluh ribu tak banyak pun boleh guna
PHPExcel
这个第三方库. 或者直接导出csv
, 函数:fputcsv
.Jika anda ingin mengeksport, hanya eksport terus ke mod CVS.
Anda tidak perlu mengeksport semuanya sekaligus. Eksport dalam kelompok
Tugas pelayan yang memakan masa seperti ini tidak sepatutnya direka sebagai
浏览器->同步->服务器
seharusnya dalam bentuk tugasan tak segerak:
Pelayar: Saya mahukan Excel, sila jana untuk saya dahulu
Pelayan: OK, misi telah bermula
Pelayar: Biar saya muat semula dan lihat (anda boleh menggunakan sambungan yang panjang), ia nampaknya telah selesai Berikan saya URL (URL boleh ditunjukkan dalam tugasan, tidak perlu mendapatkannya lagi), saya mahu untuk memuat turunnya
Pelayan: http://domain.com/test.xlsx
Pelayar: Mulakan muat turun
Tidakkah cukup untuk mempunyai lebih daripada 10,000 penyertaan? Seberapa besar fail itu?
Anda boleh membuat generasi bersegmen... tulis 1000 item dengan 1000 item.
Selain itu, jika masa php tamat, anda boleh menukar set_time_limit()
Asynchronous, semua operasi eksport hendaklah dibuat sebagai asynchronous
Ditulis dalam paging, contohnya, muat semula sekali setiap 1000 item
Gunakan skrip untuk menjalankan, php -f export.php
Gunakan asynchronous atau multi-process, penyemak imbas menyerahkan tugas, menggesa bahawa tugasan sedang diproses, skrip berbilang proses latar belakang perlahan-lahan memprosesnya, dan apabila selesai, menolak mesej ke penyemak imbas untuk menggesa pengguna bahawa operasi eksport telah siap dan boleh dimuat turun.
Mesej tolak penyemak imbas: http://www.workerman.net/web-...
Rangka kerja berbilang proses: http://doc3.workerman.net/ins...