ThinkPHP6 ialah rangka kerja PHP yang digunakan secara meluas dan dialu-alukan oleh ramai pembangun. Jika anda ingin melaksanakan tugas berjadual dalam ThinkPHP6, maka anda perlu menggunakan Crontab. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Crontab untuk menyelesaikan tugas yang dijadualkan dalam ThinkPHP6.
1. Apakah itu Crontab?
Crontab ialah program tugas berjadual dalam sistem pengendalian Linux. Ia secara automatik boleh melaksanakan arahan atau program pada masa yang ditentukan. Crontab ialah alat pengurusan tugas berjadual di bawah sistem Linux, yang sangat berkuasa. Ia boleh menyediakan mekanisme tugas berjadual yang kukuh untuk sistem dan pengguna, menyokong penjadualan dan pengurusan tugas, merekod dan melihat hasil pelaksanaan tugas, dan fungsi lain.
2. Bagaimana hendak menggunakan Crontab dalam ThinkPHP6?
Pertama sekali, menggunakan Crontab dalam ThinkPHP6 memerlukan pemasangan sambungan Swoole. Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi untuk PHP yang boleh menyediakan PHP dengan keupayaan pengaturcaraan tak segerak, selari dan cekap serupa dengan Node.js.
1. Pasang sambungan Swoole
Sebelum memasang sambungan Swoole, anda perlu memasang alat Komposer PHP terlebih dahulu. Selepas memasang Komposer, gunakan arahan berikut untuk memasang sambungan Swoole:
composer require swoole/swoole:4.*
Selepas pemasangan selesai, anda perlu menambah sambungan Swoole pada fail konfigurasi PHP. Tambahkan sambungan berikut pada fail php.ini:
extension=swoole.so
Selepas pemasangan, anda boleh menggunakan arahan berikut untuk menyemak sama ada pemasangan berjaya:
php --ri swoole
2. Tentukan tugas berjadual
Untuk menentukan tugas berjadual dalam ThinkPHP6, anda perlu menggunakan fungsi pemasa Swoole. Swoole menyediakan kelas pemasa: swoole_timer_tick(), yang boleh membuat pemasa dengan cepat. Berikut ialah contoh mudah:
swoole_timer_tick(2000, function () { echo "Hello World "; });
Kod di atas akan mengeluarkan "Hello World" setiap 2 saat.
Dalam ThinkPHP6, tugas berjadual boleh ditakrifkan dalam fail app/common.php. Berikut ialah contoh mudah:
// app/common.php use thinkacadeLog; if (!function_exists('initCrontabTask')) { function initCrontabTask() { swoole_timer_tick(2000, function () { Log::info('Hello World!'); }); } }
Dalam contoh di atas, kami menentukan tugas berjadual yang mengeluarkan "Hello World" setiap 2 saat. Kami menggunakan kelas Log ThinkPHP6 untuk merekodkan keputusan pelaksanaan tugas yang dijadualkan.
3 Mulakan tugas berjadual
Dalam penggunaan sebenar, anda boleh memulakan tugas berjadual dengan cara yang berbeza. Di bawah, kami akan memperkenalkan dua cara untuk memulakan tugas yang dijadualkan.
Kaedah 1: Gunakan swoole_server tanpa coroutine
Menggunakan swoole_server tanpa coroutine boleh memulakan tugas berjadual dengan cepat Anda hanya perlu menambah kaedah tugas berjadual apabila memulakan swoole_server:
// public/index.php use SwooleHttpServer; use thinkApp; use thinkacadeConfig; require __DIR__ . '/../vendor/autoload.php'; $app = App::getInstance(); $swooleConfig = Config::get('swoole'); $http = new Server($swooleConfig['http']['host'], $swooleConfig['http']['port']); $http->on('WorkerStart', function () use ($app) { $app->initialize(); initCrontabTask(); // 启动定时任务 }); $http->on('request', function ($request, $response) use ($app) { $app->run()->send(); }); $http->start();
// command/crontab.php use thinkacadeConfig; require __DIR__ . '/../vendor/autoload.php'; $config = Config::get('swoole'); $http = new SwooleHttpServer($config['host'], $config['port']); $http->on('WorkerStart', function () { initCrontabTask(); // 启动定时任务 }); $http->start();
php think crontab start
Atas ialah kandungan terperinci Cara menggunakan Crontab dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!