Dengan pembangunan berterusan Internet dan aplikasi moden, ramai pengaturcara telah mula menggunakan Laravel sebagai rangka kerja mereka sendiri. Fungsi tugas berjadual yang disediakan dalam rangka kerja Laravel secara automatik boleh melaksanakan beberapa tugas melalui konfigurasi mudah. Walau bagaimanapun, kadang-kadang kita mendapati bahawa tugas yang dijadualkan ini tidak berjalan seperti yang kita harapkan.
Dalam artikel ini, kami akan membincangkan beberapa masalah biasa tugas berjadual Laravel tidak berjalan dan menyediakan penyelesaian yang sepadan.
Mula-mula, kita perlu menyemak sama ada tugas berjadual kita telah dikonfigurasikan dengan betul. Mengkonfigurasi tugas berjadual dalam rangka kerja Laravel adalah sangat mudah. Hanya tentukan kaedah jadual dalam fail app/Console/Kernel.php. Kaedah jadual mengandungi semua tugas yang ingin kita jalankan, seperti berikut:
protected function schedule(Schedule $schedule) { $schedule->command('email:send')->daily(); $schedule->command('email:send --force')->hourly(); }
Perhatikan bahawa e-mel arahan:send di sini mewakili tugas khusus yang ingin kita jalankan. Jika tugas berjadual kami dikonfigurasikan dengan betul, tetapi tugas berjadual masih tidak dapat dijalankan, maka kami boleh mempertimbangkan untuk menyemak aspek berikut:
Tugas berjadual Laravel Bergantung pada masa sistem, jika masa sistem tidak betul, tugas yang dijadualkan mungkin tidak berjalan tepat pada masanya. Oleh itu, kita perlu menyemak sama ada masa sistem adalah betul.
Jika kami menggunakan sistem pengendalian Linux, masukkan arahan berikut dalam terminal untuk melihat masa sistem semasa:
$ date
Jika kami menggunakan sistem pengendalian Windows, masukkan arahan berikut dalam gesaan arahan untuk melihat masa sistem semasa: Semak masa sistem semasa:
> time/T > date/T
Jika masa sistem tidak betul, kita perlu menetapkan masa yang betul secara manual.
Tugas berjadual Laravel dilaksanakan dengan kebenaran pengguna yang sedang log masuk secara lalai. Jika pengguna yang sedang log masuk tidak mempunyai kebenaran yang mencukupi, tugas yang dijadualkan mungkin tidak berjalan dengan betul. Oleh itu, kita perlu menyemak sama ada kebenaran pengguna untuk menjalankan tugas yang dijadualkan adalah mencukupi.
Anda boleh menggunakan arahan berikut untuk melihat pengguna semasa:
$ whoami
Jika pengguna semasa tidak mempunyai kebenaran yang mencukupi, kami boleh cuba menggunakan perintah sudo untuk menjalankan tugas berjadual Laravel:
$ sudo php artisan schedule:run
Ambil perhatian bahawa kita perlu mempunyai hak pentadbir untuk menggunakan arahan sudo.
Mekanisme lalai tugasan berjadual Laravel adalah untuk menambah kunci pada tugasan semasa ia dijalankan untuk mengelakkan dijalankan berulang. Jika tugasan semasa belum selesai dijalankan, tugasan baharu tidak boleh dimulakan. Pada masa ini kita perlu menyemak dua situasi berikut:
Akhir sekali, kita perlu menyemak sama ada tugasan yang dijadualkan didayakan. Beberapa tugas yang dijadualkan mungkin didayakan secara manual. Kami perlu menyemak sama ada tugasan tersebut didayakan.
Kami boleh melihat semua tugas berjadual melalui arahan berikut:
$ crontab -l
Jika tugas yang dijadualkan tidak dipaparkan dalam senarai, kami perlu menambahkannya secara manual pada senarai tugas yang dijadualkan.
Ringkasan
Dalam rangka kerja Laravel, anda boleh mengautomasikan beberapa tugas dengan mudah dengan menggunakan tugasan yang dijadualkan. Walau bagaimanapun, semasa proses pembangunan sebenar, kami mungkin menghadapi masalah tugas berjadual tidak berjalan. Artikel ini menyediakan beberapa penyelesaian biasa untuk masalah ini untuk membantu kami menggunakan tugas berjadual dengan lebih baik dalam rangka kerja Laravel.
Atas ialah kandungan terperinci Beberapa masalah biasa dengan tugas berjadual Laravel tidak berjalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!