Keperluan/senario:
Sebagai contoh, tetapkan artikel untuk diterbitkan pada 2018-5-22 13:51:16.
Beritahu saya dalam tiga hari.
Mesej dipadamkan secara automatik selepas tamat tempoh.
……
Tunggu, permintaan jenis ini adalah untuk melakukan sesuatu secara automatik pada masa tertentu Ini nampaknya tiada kaitan dengan baris gilir Adakah ia memerlukan perisian tengah atau masa lain, atau proses pemastautin atau sesuatu.
Pemahaman saya ialah tugasan yang perlu dilakukan dimasukkan ke dalam satu baris demi baris, dan kemudian proses disegarkan secara berterusan, dan tugasan yang memenuhi nod masa dikeluarkan dan dilaksanakan Adakah ini ideanya?
Ingin tahu apakah penyelesaian matang untuk senario ini dibuat?
Terima kasih ^_^
Gunakan tugas tertunda, https://github.com/ouqiang/go...
Kaedah pelaksanaan tugas tertunda
capai sendiri, gunakan roda masa atau cerucuk akar kecil
Beritahu dengan ruang kekunci redis
beanstalkd
Perkara utama poster mestilah DelayQueue, iaitu perkhidmatan baris gilir mesej tertunda. Untuk senario tertentu, sila rujuk:
1 perkhidmatan pembatalan pesanan automatik Taobao
2.
Laksanakan Pemasa berdasarkan kaedah tunggu/beritahu.
Hanya gunakan program untuk terus memberus = =
Anda boleh menggunakan tugas berjadual crontab untuk menyelesaikan masalah, dan anda boleh mereka bentuk antara muka Php untuk dipanggil setiap hari, jam dan minit.
Tambah medan masa, dan kemudian buat pertimbangan yang berkaitan pada lapisan model
Program memberus, tetapi tekanan pangkalan data mesti dipertimbangkan.
Anda boleh menolak semua tugasan ke dalam baris gilir, mengeluarkan skrip daripada baris gilir dalam gelung tak terhingga, membandingkan titik masa dan membuang tugasan ke modul pelaksanaan apabila ia tiba. Jika masa belum tamat, teruskan ke seberang dan tolak ke dalam barisan.
Dua barisan. Contohnya, baris gilir untuk dilaksanakan: tasteList;
Apabila volum besar, anda hanya boleh membuka beberapa proses mengikut keperluan, dan tidak perlu memikirkan tentang pelaksanaan berulang.Bahagikan tugas mendapatkan dan melaksanakan tugas kepada proses yang berbeza:
1 Mendapatkan semula tugasan: Skrip berpusing untuk mengeluarkan tugasan daripada tasteList, menentukan titik masa dan menolak tugasan ke baris gilir runList apabila tiba masanya. naik. Jika ia tidak mencukupi, teruskan menolaknya ke dalam tasteList;
Hanya gunakan fungsi tugas berjadual sistem untuk mencetuskan skrip. Anda boleh memutuskan apa yang dilakukan oleh skrip dan cara melakukannya Anda juga boleh merujuk kepada jawapan di atas.
Secara umumnya, skrip frekuensi tinggi sudah memadai (contohnya, sekali seminit atau sekali setiap 5 minit, anda boleh menilai masa dalam skrip dan memanggil tugasan dengan frekuensi yang berbeza tugasan yang dijadualkan secara berasingan untuk setiap skrip kekerapan.
Atau gunakan
workerman
swoole
fungsi tugas berjadualIaitu, anda menyimpan data dan kemudian membuat skrip untuk mengesannya secara berterusan. . Contohnya, mengesan sekali setiap 1 minit