cari

Rumah  >  Soal Jawab  >  teks badan

laravel5.1 masalah baris gilir tak segerak

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?


Berkat jawapan dari pelajar tingkat 1, masalah di atas telah selesai Sekarang ada soalan kedua

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!

给我你的怀抱给我你的怀抱2737 hari yang lalu846

membalas semua(1)saya akan balas

  • 为情所困

    为情所困2017-05-16 16:55:47

    Adakah .env dikonfigurasikan

    balas
    0
  • Batalbalas