Setelah Harvey Hardware Network beralih ke platform rilis berita baru minggu lalu, karena kebutuhan sementara, platform berita asli tidak sepenuhnya dihentikan. Oleh karena itu, setelah platform baru mulai digunakan, ditemukan sakit kepala selalu diupdate ke konten sistem asli, yang akhirnya menyebabkan link berita tertentu tidak dapat diakses secara normal. Sistem baru telah mengoptimalkan URL, dan URL halaman berita berbeda dari sistem asli. Awalnya saya kira karena ada yang masih menggunakan sistem yang lama, namun keesokan harinya keadaan masih terjadi, jadi saya pikir mungkin ada masalah dengan sistem yang lama. Nanti saya cek dan ternyata sistem Empire CMS punya tugas default menyegarkan beranda, jadi saya membatalkannya. Setelah itu, beranda situs web akan diperbarui secara normal.
Setelah menyelesaikan masalah ini, saya menjadi tertarik dengan tugas-tugas PHP. Saya telah mempelajarinya sebelumnya, tetapi saya belum terlalu mempraktikkannya. Mungkin mengingat pentingnya fungsi ini untuk pengembangan sistem situs web, saya memutuskan untuk mempelajarinya sekarang dan menulis satu set Kode matang untuk aplikasi masa depan.
Yang pertama adalah mencari informasi yang relevan secara online. Dengan membaca informasi ini, saya mengetahui bahwa tugas PHP secara kasar dapat dibagi menjadi tiga kategori.
Tugas terjadwal server
Server WIN dapat langsung menggunakan tugas terjadwal untuk menjalankan aplikasi terkait, dan server Linux dapat diimplementasikan dengan menambahkan tugas terjadwal di /etc/crontab.
Eksekusi tugas otomatis melalui loop tak terbatas
Buat halaman file program, dan gunakan abaikan_pengguna_abort untuk mengaturnya agar dapat dieksekusi setelah menutup halaman browser, kemudian, setelah menjalankan halaman program, rencana tugas yang Anda perlukan akan selalu dijalankan secara otomatis. Bagi programmer PHP biasa, jika kurang percaya diri, operasi ini tidak diperbolehkan, karena loop tak terbatas dapat dengan mudah menyebabkan server crash.
Memicu tugas terjadwal
Di antara beberapa program yang saya tahu, seperti Discuz, Empire CMS, dll., semuanya menggunakan metode ini untuk menyelesaikan tugas terjadwal sistem Dibandingkan dengan dua metode sebelumnya, ini adalah yang paling aman dan sederhana.
Ada begitu banyak pilihan, jadi ketika merancang sebuah program, Anda harus memilih cara memprogram yang paling tepat berdasarkan kebutuhan sebenarnya. Mari kita perkenalan dengan menggunakan contoh.
Majalah elektronik AiLiterature.com diproduksi segera setelah situs web diluncurkan. Ini adalah majalah elektronik yang dikirimkan melalui email. Mengirimkan edisi terbaru majalah elektronik ke kotak surat pelanggan adalah tugas yang sangat besar, cukup dalam batch halaman. Mengirim jelas tidak berhasil. Alasan utamanya adalah saat ini tidak ada server email sendiri, seperti kotak surat yang disediakan oleh News, Tencent, dan 163. Meskipun mereka mendukung SMTP untuk mengirim email, mereka tidak mengizinkan pengiriman email dalam jumlah besar. jadi itu hanya bisa diselesaikan melalui program.
Pertama-tama, saya memilih tugas terjadwal yang dipicu. Untuk mencegah program pengiriman email memengaruhi pengalaman pengguna mengunjungi situs web, terutama kecepatan membuka halaman situs web, saya memilih menggunakan Ajax untuk mengimplementasikan pemicunya. Tambahkan fungsi pemicu ke file JS publik, dan pengguna dapat memicu tugas pengiriman email saat mereka mengunjungi halaman mana pun.
Untuk membatasi frekuensi pengiriman email dan mencegahnya dilarang oleh server email karena terlalu seringnya pengiriman email, batas waktu juga ditetapkan dalam program ini. RAND digunakan untuk menghasilkan waktu tunggu secara acak untuk menyelesaikan masalah itu pengiriman email bukanlah interval yang tetap. Faktanya, interval dalam mode pemicu adalah Waktunya pada dasarnya tidak pasti, tetapi ketika situs web memiliki jumlah kunjungan yang besar, masalah seperti itu mungkin masih terjadi, jadi lebih aman untuk menambahkan pengaturan di dalamnya. pandangan.
Terlepas dari tindakan di atas, dalam aplikasi sebenarnya masih ditemukan bahwa server email akan dilarang mengirim email, namun tidak dilarang secara permanen. Cara untuk mengatasi masalah ini adalah dengan membuat array untuk menyimpan parameter SMTP dari layanan email yang berbeda. Ketika satu server email tidak dapat mengirim email secara normal, maka secara otomatis akan berpindah ke server email lain.
Dalam daftar alamat email yang dikumpulkan, akan ada beberapa alamat yang tidak valid. Selama proses pengiriman email, jika pengiriman gagal satu kali, beralihlah ke server email lain dan kirim lagi , tidak ada lagi email yang dikirim ke alamat ini di masa mendatang, sehingga meningkatkan efisiensi daftar alamat email dan menghemat waktu untuk mengirim email di lain waktu.
Beberapa teman mengatakan bahwa saya terlalu pelit dan terlalu sedikit membagikan kode di blog jenis ini. Padahal, ketika kita mencari informasi di Internet, kita akan menemukan bahwa kode-kode yang dibagikan di banyak website belum tentu praktis, dan terkadang kita praktis. tertunda karena mengacu pada kode-kode ini banyak waktu, jadi ketika meringkas, saya sering merangkum metode untuk menyelesaikan masalah dan menuliskan parameter teknis utama sehingga saya dapat memiliki informasi referensi ketika menghadapi masalah serupa di masa depan. Jika Anda memiliki pertanyaan mengenai hal ini, Anda dapat menghubungi saya melalui pesan atau email.
Ruang pribadi penulis Happy Boy