Saya tidak tahu tentang "praktik terbaik". Saya tahu kesalahan paling umum.
Kesalahan Pertama: DOS Yourself
Anda menggunakan webhandler untuk memproses pekerjaan yang sudah berjalan lama. Ini bisa buruk atau sangat buruk tergantung pada persentase klik Anda yang menjadi pekerjaan lama, berapa lama mereka berjalan dan berapa banyak lalu lintas berkelanjutan yang Anda dapatkan.
Anda ingin memastikan bahwa Anda tidak mendapatkan lebih dari 1 pekerjaan jangka panjang dalam periode waktu yang dibutuhkan untuk menyelesaikan pekerjaan jangka panjang itu. Jika Anda melakukannya, Anda DOS sendiri. Ini juga akan semakin buruk semakin banyak lalu lintas yang Anda dapatkan dengan asumsi persentase dan waktu tetap konsisten. Itu salah satu masalah yang memaksakan diri membatasi pertumbuhan lalu lintas.
Kesalahan Kedua: Pemijahan dari webhandler
Memunculkan proses dari penangan web untuk menangani proses yang berjalan lama bisa rumit, dan akibatnya juga rentan kesalahan.
- Anda harus memisahkan dari orang tua dengan benar jika penangan web menunggu anak selesai.
- Ketika Anda bercabang anak di unix itu mewarisi pegangan terbuka dari orang tua. Ini akan ditutup secara otomatis kecuali ditimpa. Ini termasuk hal-hal seperti koneksi database, filehandles, koneksi jaringan terbuka lainnya. Semua yang ditutup ketika proses anak selesai.
Pilihan
Saya biasanya menggunakan at(1)
untuk memisahkan secara bersih dari webhandler tanpa forking.
Anda juga dapat menggunakan implementasi polling dengan cron
.
Anda dapat berkomunikasi dengan proses server lain yang menangani pemrosesan. Komunikasi itu dapat dilakukan dengan sockets
,, pipes
atau abstraksi tingkat yang lebih tinggi seperti panggilan http REST atau routing pesan antrian.