Rumah > Soal Jawab > teks badan
1. Ubah suai konfigurasi dalam baris gilir dalam folder konfigurasi kepada:
'default' => env('QUEUE_DRIVER', 'database'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',/*在数据库的配置中有定义数据表前缀为ksb_,这里不知是否需要补全前缀*/
'queue' => 'default',
'expire' => 60,
],
……………………
2. Buat jadual giliran
php baris gilir artisan:meja
php artisan migrate
3. Buat kelas tugas beratur
php artisan make:job CollectionBook
4. Tolak tugas ke baris gilir
$job = (new CollectionBook(3565))->onQueue('collectionbook')->delay(60);
dispatch($job);
5. Pemantauan latar belakang
php artisan queue:work --queue=collectionbook --daemon --sleep=3 --try=3
Halaman untuk menjalankan tugasan tolak
Saya mendapati bahawa baris gilir dijalankan secara serentak dan tidak ditulis ke dalam jadual tugasan baris gilir Bagaimana untuk menyelesaikannya?
Jalankan dalam direktori akar tapak web (/home/wwwroot/kshuba/)
php artisan queue:work --queue=collectionbook --daemon --sleep=3 --try=3
Tugas giliran dalam pangkalan data digunakan
Jika anda menyemak ps artisan pada masa ini, anda akan melihat bahawa prosesnya ialah:
root 2287 2144 9 18:30 pts/0 00:00:02 php artisan queue:work --queue=collectionbook --daemon --sleep=3 --try=3
Tetapi apabila saya memutuskan sambungan klien ssh, saya mendapati proses itu telah hilang
Pada masa ini, saya menggunakan penyelia untuk memantau proses tersebut
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
Mulakan penyelia dan pertanyaan
Hasilnya adalah pemantauan
laravel-worker-collectionbook RUNNING pid 2271, uptime 0:00:02
ps artisan akan melihat prosesnya sebagai:
root 2300 2144 9 18:30 pts/0 00:00:02 php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --daemon --sleep=3 --try=3
Masalahnya ialah tugas baris gilir dalam pangkalan data pertanyaan belum digunakan
Selain itu, jika anda menjalankannya dalam direktori akar pelayan
php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Tugas beratur juga tidak boleh digunakan
Cuba tukar arahan penyelia kepada:
php artisan queue:work --queue=collectionbook --sleep=3 --try=3 --daemon
Didapati bahawa status penyelia akan menggesa: BACKOFF Keluar terlalu cepat (log proses mungkin mempunyai butiran)
Pemantauan tidak boleh dimulakan?
Konfigurasi saya sendiri tiada -- masalah telah diselesaikan!