Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan tugas berjadual dalam PHP dan aplikasinya

Bagaimana untuk melaksanakan tugas berjadual dalam PHP dan aplikasinya

WBOY
WBOYasal
2023-06-18 12:13:222356semak imbas

Dengan perkembangan Internet dan kemajuan teknologi, fungsi laman web menjadi semakin berkuasa Untuk beberapa tugas yang perlu dilakukan secara kerap, seperti menjadualkan e-mel, membersihkan log, dan lain-lain, adalah perlu. untuk menggunakan tugas berjadual untuk mengautomasikan tugasan ini. Sebagai bahasa skrip yang berjalan di bahagian pelayan, PHP sering digunakan untuk pembangunan web dan juga boleh melaksanakan tugas berjadual. Artikel ini akan memperkenalkan kaedah dan aplikasi PHP untuk melaksanakan tugas berjadual.

1. Kaedah pelaksanaan

PHP boleh melaksanakan tugas berjadual melalui perkhidmatan Cron yang disertakan dengan sistem Linux atau dengan menggunakan perpustakaan kelas pihak ketiga di bawah kami akan memperkenalkan satu pelaksanaan dan penggunaannya oleh seorang.

  1. Perkhidmatan Cron

Perkhidmatan Cron ialah perkhidmatan tugas berjadual yang disertakan dengan sistem Linux Ia boleh melaksanakan beberapa arahan atau skrip tertentu dengan kerap. Untuk menggunakan perkhidmatan Cron, anda perlu mengedit fail konfigurasi pemasa.

Masukkan perintah berikut dalam terminal untuk mengedit fail konfigurasi:

crontab -e

Selepas pengeditan selesai, simpan dan keluar Perkhidmatan Cron akan melaksanakan arahan atau skrip yang sepadan mengikut tugasan yang dijadualkan dalam fail konfigurasi.

Berikut ialah format fail konfigurasi pemasa perkhidmatan Cron:

* * * * * command

Pemasa perkhidmatan Cron dibahagikan kepada lima bahagian, mewakili minit, jam, hari, bulan dan minggu serta nilai Julat adalah 0-59, 0-23, 1-31, 1-12, 0-7 (0 dan 7 kedua-duanya adalah hari Ahad). Selain lima bahagian ini, terdapat juga bahagian arahan, yang mewakili arahan atau skrip yang perlu dilaksanakan.

Sebagai contoh, untuk menjalankan skrip myscript.sh pada pukul 11 ​​malam setiap malam, kita boleh mengedit fail konfigurasi pemasa seperti ini:

0 23 * * * /path/to/myscript.sh

Pemasa ini bermaksud untuk melaksanakan myscript pada pukul 11 ​​malam setiap malam skrip .sh.

  1. Pustaka kelas pihak ketiga

Selain menggunakan perkhidmatan Cron, kami juga boleh menggunakan perpustakaan kelas pihak ketiga untuk melaksanakan tugas yang dijadualkan. Pustaka kelas ini biasanya menyediakan fungsi yang lebih kaya, seperti penjadualan tugas, kawalan konkurensi, dsb.

Berikut ialah pengenalan kepada dua perpustakaan pihak ketiga yang biasa digunakan.

(1) Cron

Cron ialah perpustakaan tugas berjadual PHP yang menyediakan fungsi penjadualan tugas yang mudah. Tugas boleh menjadi pernyataan SQL, kaedah atau fungsi tanpa nama. Pustaka kelas Cron boleh melaksanakan tetapan tugas berjadual dan fungsi pengelogan dengan mudah.

Langkah-langkah untuk menggunakan perpustakaan kelas Cron adalah seperti berikut:

① Pemasangan

Pustaka kelas Cron boleh dipasang melalui Composer, buka terminal dan masukkan arahan berikut :

composer require dragonmantank/cron-expression

②Menulis kod

Seterusnya, kami mencipta fail test.php untuk menunjukkan contoh penggunaan perpustakaan kelas Cron. Tugas kami ialah mengeluarkan satu baris "Hello World!"

<?php

require_once './vendor/autoload.php';

$cron = new CronCronExpression('* * * * *');

// 每分钟运行一次
if ($cron->isDue()) {
    echo 'Hello World!' . PHP_EOL;
}

Kod di atas mula-mula memperkenalkan pustaka kelas Cron melalui Komposer, dan kemudian mencipta objek CronExpression Masa tugasan yang dijadualkan dihantar ke objek yang di instantiated melalui rentetan, seperti ' ' mewakili pelaksanaan tugasan setiap minit Selain itu, terdapat juga '0 1 ' yang mewakili pelaksanaan tugas pada jam 1 pagi setiap hari.

Kaedah isDue() menyemak sama ada tugasan yang kami tetapkan perlu dilaksanakan.

(2) PHP Task Scheduler

Selain perpustakaan kelas Cron, terdapat juga penjadual tugas yang sesuai untuk PHP - PHP Task Scheduler (PHP Task Scheduler), yang boleh Menjalankan CLI ( Command Line Interface) arahan, laksanakan skrip PHP, panggil arahan Shell atau API, dsb. Penjadual tugas PHP sangat mudah digunakan Anda boleh menetapkan masa pelaksanaan tugas, kaedah panggilan, dll mengikut keperluan anda.

Langkah-langkah untuk menggunakan PHP Task Scheduler adalah seperti berikut:

① Installation

PHP Task Scheduler boleh dipasang melalui Composer, buka terminal dan masukkan arahan berikut:

composer require lizhichao/task-scheduler

② Menulis kod

Juga mencipta fail test.php untuk menunjukkan cara untuk perancah dan menulis penjadual tugas PHP.

<?php

require_once './vendor/autoload.php';

use OvertrueEasySchedulingSchedule;

$schedule = new Schedule;

$schedule -> exec('echo "Hello World!"') -> everyMinute();

Kod di atas memperkenalkan pustaka kelas penjadual tugas PHP, melancarkan pelan tugasan, menggunakan kaedah exec untuk menambah tugasan dan menjalankannya setiap minit.

2. Senario aplikasi

Fungsi tugas berjadual PHP boleh digunakan secara meluas dalam pengendalian tapak web dan pengurusan penyelenggaraan dan pelaksanaan tugas latar belakang Di bawah kami akan memperkenalkan beberapa senario aplikasi biasa.

    Log bersih
Fail log tapak web biasanya mengambil banyak ruang cakera Untuk mengelakkan penggunaan ruang cakera yang terlalu banyak, kami boleh membersihkan fail log itu tugas yang dijadualkan.

Menggunakan perkhidmatan Cron untuk melaksanakan:

0 0 * * * rm /path/to/log/*.log

Menggunakan penjadual tugas PHP untuk melaksanakan:

$schedule -> exec('rm /path/to/log/*.log') -> daily();

Kod di atas merealisasikan pembersihan laluan /path/to/log pada 0 am setiap hari Semua fail .log.

    Hantar e-mel
Tugas berjadual juga boleh digunakan untuk merancang untuk menghantar e-mel, seperti menghantar maklumat berita atau maklumat promosi secara kerap. Menggunakan perpustakaan kelas pihak ketiga PHP boleh melaksanakan perkhidmatan push e-mel SMTP dengan lebih mudah.

Gunakan perkhidmatan Cron untuk melaksanakan:

0 8 * * * php /path/to/send_email.php

Antaranya, send_email.php ialah skrip kami untuk menghantar e-mel secara berkala.

Gunakan perpustakaan kelas Cron untuk melaksanakan:

$cron = new CronExpression('0 8 * * *');
if ($cron->isDue()) {
    // your email sending code
}

Gunakan penjadual tugas PHP untuk melaksanakan:

$schedule->exec('php /path/to/send_email.php')->dailyAt('08:00');

Kod di atas melaksanakan tugas menghantar e-mel pada pukul 8 setiap pagi.

3. Ringkasan

Artikel ini memperkenalkan kaedah dan senario aplikasi menggunakan perkhidmatan Cron dan perpustakaan kelas pihak ketiga untuk melaksanakan tugas berjadual PHP. Tugas berjadual boleh membantu kami menjimatkan banyak kerja berulang dan meningkatkan kecekapan kerja. Dalam proses menggunakan tugas berjadual, kita perlu memberi perhatian kepada isu seperti tetapan masa tugas dan rekod log pelaksanaan tugas.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan tugas berjadual dalam PHP dan aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn