Lewati ke konten
TubePress — gratis, self-hosted & aktif dikembangkan
Referensi pengembang

Skrip cron & CLI

Penjadwal pseudo-cron dan skrip baris perintah opsional untuk host tingkat lanjut.

TubePress menjalankan pekerjaan berulangnya — menghitung ulang peringkat, memantau pekerjaan transcode, mengimpor feed, memperbarui sitemap, dan lainnya — tanpa mengharuskan Anda mengonfigurasi crontab sistem. Halaman ini menjelaskan pseudo-cron, heartbeat yang menjaganya tetap berjalan, dan skrip command-line opsional untuk host tingkat lanjut.

Pseudo-cron

CronManager adalah penjadwal bergaya WordPress. Tugas-tugas didaftarkan dengan nama dan interval, dan CronManager::run() dipanggil sekali di akhir setiap render halaman. Setiap tugas hanya berjalan jika cukup waktu telah berlalu sejak terakhir kali berjalan.

// Register a task (typically from a plugin's boot() method)
CronManager::register('promo_refresh', 600, function () {
    Promo::rebuildCache();   // runs at most every 10 minutes
});

Dirancang agar aman di host mana pun:

  • Penguncian atomik. UPDATE bersyarat pada tabel settings mengklaim setiap eksekusi, sehingga dua permintaan bersamaan tidak akan pernah menjalankan tugas yang sama dua kali.
  • Timestamp persisten. Waktu terakhir dijalankan disimpan di settings (dengan autoload = 0), sehingga jadwal tetap ada setelah restart dan crash — pemuatan halaman berikutnya langsung melanjutkan dari tempat terakhir berhenti.
  • Mundur otomatis. Tugas yang terus gagal akan dicoba ulang dengan interval yang bertumbuh secara eksponensial (dibatasi satu jam) hingga pulih, dan penghitung kegagalan direset saat berhasil.

Heartbeat — tanpa crontab

Pseudo-cron hanya aktif saat halaman sedang dirender, yang menjadi masalah bagi situs baru atau situs dengan lalu lintas rendah. TubePress mengatasi ini dengan heartbeat yang dikelola sendiri: proses CLI ringan (bin/heartbeat.php) yang mem-ping halaman beranda Anda setiap sekitar 50 detik sehingga penjadwal tetap berjalan bahkan tanpa satu pun pengunjung.

  • Dilindungi PID dan secara otomatis di-spawn ulang oleh permintaan web mana pun jika berhenti — Anda tidak perlu memulai atau mengawasinya.
  • Matikan saat runtime dengan mengatur heartbeat_enabled ke 0.
Inilah mengapa TubePress berjalan di shared hosting. Dengan kombinasi pseudo-cron dan heartbeat, pekerjaan terjadwal berjalan dengan sendirinya — tanpa crontab -e, tanpa supervisor, tanpa layanan tambahan untuk dikelola.

Apa yang berjalan di penjadwal

Core dan plugin bawaan mendaftarkan tugas-tugasnya sendiri — misalnya penghitungan ulang skor CTR, pengiriman dan percobaan ulang pekerjaan transcode, impor feed, pemrosesan katalog, pekerjaan terjemahan AI, dan pembaruan sitemap. Saat Anda mengaktifkan subsistem, tugas-tugas tersebut ditambahkan secara otomatis; tidak ada yang perlu dikonfigurasi.

Skrip CLI opsional

Untuk operasi berat atau satu kali, beberapa skrip command-line tersedia di bin/ dan dapat dijalankan secara manual atau dari crontab sungguhan pada host yang mendukungnya. Skrip-skrip ini mencakup worker yang berjalan lama (untuk unduhan katalog dan penghapusan massal) serta pembantu pemeliharaan. Jalankan menggunakan PHP CLI sistem dari root proyek:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
Cocokkan PHP CLI dengan PHP web. Jalankan skrip CLI dengan versi PHP yang sama yang digunakan situs Anda (8.2 atau lebih baru). Penjaga versi akan menolak untuk memulai pada versi yang lebih lama.

Menggunakan crontab sungguhan (tingkat lanjut)

Jika Anda lebih suka menggerakkan penjadwal dari sistem operasi — misalnya pada situs dengan lalu lintas tinggi di mana Anda ingin waktu yang ketat dan dapat diprediksi — Anda dapat menonaktifkan heartbeat dan menambahkan satu entri cron sistem yang meminta halaman beranda Anda (atau menjalankan heartbeat sekali) pada interval singkat. Sebagian besar operator tidak pernah membutuhkan ini; heartbeat bawaan sudah cukup.

Langkah berikutnya

Masih kesulitan?

Buka tiket dari dasbor Anda dan tim kami akan membantu Anda.

Coba demo langsung → Unduh TubePress →