Saya mempunyai tasks
表,该表有 status
和 deadline
lajur. Bagaimana untuk menukar status secara automatik kepada "Tamat tempoh" apabila tarikh semasa lebih besar daripada tarikh tamat tugas? Adakah terdapat pendengar acara masa nyata di Laravel?
Saya rasa inilah rupa kelas pendengar acara, tetapi saya tidak pasti apa yang perlu dilakukan seterusnya.
<?php namespace AppEvents; use AppModelsTask; use IlluminateBroadcastingInteractsWithSockets; use IlluminateFoundationEventsDispatchable; use IlluminateQueueSerializesModels; class DeadlineExpired { use Dispatchable, InteractsWithSockets, SerializesModels; /** * The task instance. * * @var AppModelsTask */ public $task; /** * Create a new event instance. * * @param AppModelsTask $task * @return void */ public function __construct(Task $task) { $this->task = $task; } }
Terdapat pendengar acara masa nyata, tetapi mereka memerlukan tindakan untuk dicetuskan. Sebagai contoh, peristiwa ini dicetuskan apabila model dibuat, dikemas kini atau dipadamkan.
Tiada "pendengar" terbina dalam untuk ping setiap model menunggu perubahan medan yang anda tentukan.
Jika anda ingin mencetuskan logik lanjut (seperti menghantar e-mel) apabila tugasan tamat tempoh, lebih baik anda menggunakan penjadual untuk menyemak sama ada terdapat tugasan tertunggak baharu. Penjadual berjalan setiap minit - ditetapkan oleh cron.
Sebab anda hanya menyemak tarikh. Cron anda hanya perlu dijalankan sekali pada tengah malam. Gunakan Penjadual Laravel untuk menyelesaikan kerja anda. Mula-mula buat kelas
Kemudian dalam appConsoleKernel.php anda, kaedah jadual-
Akhirnya konfigurasikan tugas cron pada pelayan anda untuk menjalankan arahan yang dijadualkan setiap hari pada tengah malam.
Saya akan menggunakan GPT untuk membantu anda menjawab soalan anda Saya harap ia akan berguna