pembangunan bahagian belakang
tutorial php
Penghantaran e-mel berjadual PHP: dilaksanakan menggunakan Cronjobs dan penjadual tugas
Penghantaran e-mel berjadual PHP: dilaksanakan menggunakan Cronjobs dan penjadual tugas

Artikel ini akan menyelidiki cara melaksanakan fungsi penghantaran automatik e-mel pada tarikh atau titik masa tertentu dalam aplikasi PHP. Untuk menangani ketidakcekapan menggunakan gelung tak terhingga secara langsung dalam skrip PHP, kami akan menumpukan pada dua penyelesaian arus perdana dan cekap: penjadualan tugas Cronjobs berasaskan sistem pengendalian, dan menggunakan mekanisme penjadualan tugas yang disediakan oleh rangka kerja PHP moden (seperti Laravel). Melalui contoh kod terperinci dan amalan terbaik, ia membantu pembangun membina sistem e-mel berjadual yang stabil dan boleh dipercayai.
1. Pengenalan: Cabaran tugas berjadual PHP
Dalam pembangunan web, kami sering menghadapi keperluan untuk melaksanakan tugas tertentu pada masa tertentu, seperti menghantar e-mel berjadual, menjana laporan atau pembersihan data. Untuk aplikasi PHP, adalah sangat tidak cekap dan tidak diingini untuk menunggu tarikh atau titik masa tertentu melalui gelung tak terhingga (seperti while(true)) secara langsung dalam kitaran hayat permintaan pengguna. Skrip PHP biasanya direka sebagai proses jangka pendek untuk bertindak balas kepada permintaan HTTP. Gelung yang berjalan lama boleh menyekat sumber pelayan web, menyebabkan permintaan tamat masa, dan mungkin juga menghabiskan memori sistem ekzos, yang menjejaskan prestasi aplikasi dan pengalaman pengguna dengan serius. Oleh itu, untuk mencapai tugas berjadual yang boleh dipercayai, kita perlu bergantung pada mekanisme penjadualan tugas bebas luaran untuk mencetuskan pelaksanaan skrip PHP.
2. Penyelesaian 1: Gunakan Cronjobs untuk penjadualan tugas
Cronjobs ialah alat penjadualan tugas yang dibina dalam sistem pengendalian seperti Unix (seperti Linux) yang membolehkan pengguna melaksanakan skrip atau arahan secara automatik pada selang masa yang telah ditetapkan. Ia adalah kaedah yang paling asas dan digunakan secara meluas untuk melaksanakan tugas berjadual PHP.
2.1 Cara Cronjobs berfungsi
Perkhidmatan Cron terus berjalan di latar belakang dan melaksanakan arahan yang sepadan pada titik masa tertentu mengikut peraturan yang ditakrifkan dalam fail konfigurasinya (crontab). Ini bermakna kita boleh mengkonfigurasi Cronjob untuk menjalankan skrip PHP pada selang masa yang tetap (seperti setiap minit, jam atau hari). Selepas skrip PHP dicetuskan, ia akan menentukan sama ada tarikh semasa memenuhi syarat penghantaran e-mel. Jika ia memenuhi syarat penghantaran e-mel, ia akan melaksanakan logik penghantaran, jika tidak ia akan keluar terus.
2.2 Konfigurasikan Cronjob
Untuk menyediakan Cronjob, anda perlu melaksanakan arahan berikut dalam terminal Linux untuk mengedit fail crontab pengguna semasa:
crontab -e
Ini akan membuka editor teks di mana anda boleh menambah peraturan penjadualan baharu. Setiap baris mewakili Cronjob bebas. Format asasnya adalah seperti berikut:
minit jam tarikh bulan minggu minggu arahan
- Minit(0-59)
- Jam(0-23)
- Tarikh(1-31)
- Bulan(1-12)
- Hari dalam seminggu (0-7, kedua-duanya 0 dan 7 mewakili Ahad)
- Perintah (skrip atau program untuk dilaksanakan)
Anda boleh menggunakan aksara khas:
- *: Memadankan semua nilai yang mungkin.
- ,: Senaraikan berbilang nilai (contohnya, 1,15 bermaksud No. 1 dan No. 15).
- -: Tentukan julat (contohnya, 9-17 bermaksud 9 pagi hingga 5 petang).
- /: Tentukan saiz langkah (contohnya, */5 bermaksud setiap 5 minit).
Contoh: Jalankan skrip PHP setiap minit
Andaikan skrip PHP anda terletak di /opt/email_scheduler.php dan laluan ke penterjemah PHP ialah /usr/bin/php. Anda boleh menambah peraturan Cronjob berikut:
*/1 * * * * /usr/bin/php /opt/email_scheduler.php
Ini bermakna perkhidmatan Cron akan melaksanakan perintah /usr/bin/php /opt/email_scheduler.php setiap minit.
2.3 Reka bentuk skrip PHP
Apabila Cronjob mencetuskan skrip PHP, skrip tidak lagi bergantung pada permintaan HTTP atau data $_POST. Ia harus melakukan semakan tarikh dan logik penghantaran mel secara bebas.
Berikut ialah contoh skrip PHP yang diubah suai untuk menghantar e-mel pada tarikh tertentu:
<?php // Tetapkan zon waktu untuk memastikan ketepatan pengiraan tarikh dan masa date_default_timezone_set('Asia/Shanghai'); // Laraskan mengikut zon waktu pelayan atau pengguna sasaran anda // Tentukan tarikh penghantaran sasaran $targetDate = '2021-12-25'; // Contoh: Krismas $currentDate = tarikh('Ym-d'); // Dapatkan tarikh semasa // Semak sama ada tarikh semasa sepadan dengan tarikh sasaran jika ($currentDate === $targetDate) {
// Logik penghantaran e-mel // Dalam aplikasi sebenar, penerima e-mel, pengirim, subjek, kandungan dan maklumat lain // biasanya diperoleh daripada pangkalan data, fail konfigurasi atau melalui parameter baris arahan $to = "recipient@example.com";
$from = "sender@example.com";
$subject = "Salam cuti: Selamat Hari Krismas!";
$messageBody = "<html><p>Pengguna yang dihormati,</p><p>Selamat Hari Krismas dan selamat bercuti!</p><p>Yang ikhlas,</p><p>Pasukan anda</p>Atas ialah kandungan terperinci Penghantaran e-mel berjadual PHP: dilaksanakan menggunakan Cronjobs dan penjadual tugas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak
Artikel Panas
Alat popular
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Bagaimana untuk melaksanakan Perakaunan Atribut Eloquent dalam PHP_Laravel penjejakan audit operasi data [Tutorial]
Apr 14, 2026 am 06:45 AM
Menambah log terus ke $casts atau getFooAttribute Eloquent adalah tidak sah kerana pengakses/mutator hanya dicetuskan apabila atribut model dibaca dan ditulis dan tidak boleh menangkap kemas kini kelompok, SQL asli dan perubahan lain yang memintas model. Audit perlu meliputi semua senario pengubahsuaian data.
Cara selamat mengubah suai nama jadual yang dirujuk oleh kunci asing dalam migrasi Laravel
Apr 17, 2026 pm 01:22 PM
Artikel ini memperkenalkan cara untuk mengemas kini nama jadual sasaran dengan selamat bagi kekangan kunci asing sedia ada (seperti menukar daripada penjual kepada penjual) melalui penghijrahan dalam Laravel, meliputi langkah dan langkah berjaga-jaga utama untuk memadamkan kekangan lama dan membina semula kekangan baharu.
Pengalihan URL NGINX dalam tindakan: penjelasan terperinci dan amalan terbaik
Apr 22, 2026 am 06:17 AM
Artikel ini bertujuan untuk menyediakan tutorial profesional tentang cara mengkonfigurasi pengalihan URL menggunakan Nginx. Kami akan menumpukan pada penggunaan arahan tulis semula, terutamanya cara mengubah hala laluan akar ke URL dengan parameter pertanyaan, dan menyelidiki perbezaan antara bendera ubah hala (302 ubah hala sementara) dan tetap (301 ubah hala kekal) serta pertimbangannya dalam SEO dan cache penyemak imbas untuk memastikan konfigurasi Nginx adalah cekap dan selaras dengan amalan terbaik.
Butiran kemasukan dan keluar inventori MySQL dan pertanyaan baki (ditapis mengikut tarikh dan gudang)
Apr 17, 2026 pm 01:34 PM
Artikel ini menerangkan secara terperinci cara menggunakan MySQL CTE dan UNION ALL untuk membina laporan aliran inventori dinamik, meringkaskan pembelian (Pembelian), kuantiti keluar (Pesanan) dan baki masa nyata setiap komoditi mengikut tarikh dan ID gudang yang ditentukan, dan mengeluarkan set hasil berstruktur yang boleh digunakan terus untuk papan pemuka perniagaan.
Bagaimana untuk melaksanakan pemuatan malas imej untuk meningkatkan prestasi halaman yang panjang
Apr 22, 2026 am 04:26 AM
Artikel ini memperkenalkan cara menggunakan atribut loading="lazy" HTML asli untuk memuatkan imej atas permintaan dengan mudah dalam port pandangan, dengan ketara mengurangkan penggunaan sumber halaman awal. Ia amat sesuai untuk menatal halaman yang panjang seperti portfolio dan galeri yang mengandungi sejumlah besar imej. Tiada rangka kerja JavaScript diperlukan dan serasi dengan penyemak imbas arus perdana moden.
Bagaimana untuk menyalin fail .PO ke Cyrillic dengan selamat dan mengelakkan pencemaran aksara NUL
Apr 17, 2026 pm 12:44 PM
Artikel ini menerangkan secara terperinci punca NUL NUL NUL (null byte) aksara bercelaru semasa memproses fail setempat .po dalam PHP dan menyediakan penyelesaian pembaikan berdasarkan operasi aliran fail yang selamat. Ia menekankan untuk mengelakkan membaca dan menulis terus fail yang sama, dan mengesyorkan menggunakan perpustakaan penghuraian PO profesional dan bukannya penggantian rentetan manual.
Memuatkan model berkaitan dengan betul dalam Laravel: Gunakan dengan() untuk pramuat pengguna dan siaran mereka
Apr 28, 2026 am 06:10 AM
Dalam Laravel, jika anda perlu mendapatkan pengguna tertentu berdasarkan ID dan pramuat siaran yang berkaitan pada masa yang sama, anda mesti meletakkan with() sebelum findOrFail(); jika tidak, findOrFail() akan segera melaksanakan pertanyaan dan mengembalikan model tunggal, dan seterusnya dengan() dan pertama() akan gagal atau menghasilkan keputusan yang tidak dijangka.
Bagaimana untuk mengeluarkan rentetan 'null' dengan selamat dan bukannya nilai kosong dalam PHP
Apr 28, 2026 am 06:39 AM
Dalam PHP 8, apabila nilai pembolehubah adalah nol, gema secara langsung akan mengeluarkan kandungan kosong; artikel ini memperkenalkan pelbagai kaedah yang selamat dan ringkas (seperti pengendali penggabungan nol, singkatan ternary, dll.) untuk menjadikan nilai nol dipaparkan secara eksplisit sebagai rentetan "null".





