Situs Web Dapat Menjalankan Tugas Terjadwal dengan Cron

jam

Kami memiliki sejumlah sistem pemantauan yang berlebihan di tempat kerja yang secara teratur menjalankan proses. Beberapa berlari setiap menit, beberapa sekali malam tergantung pada apa yang mereka lakukan. Misalnya, kami mungkin menjalankan skrip yang mengekspor semua pelanggan yang belum melakukan pembelian dalam 30 hari untuk mengirimi mereka kupon.

Daripada mencoba melacak semua ini dengan tangan, jauh lebih mudah untuk membangun pekerjaan yang dijadwalkan dan dieksekusi secara otomatis. Pada sistem berbasis Unix, ini dilakukan dengan Cron. Untuk Anda yang tahu apa yang Anda lakukan, jangan ragu untuk mendidik saya dan para pembaca jika saya membuang disinformasi.

Sangat disayangkan, tetapi pengembang web biasa tidak mengenal Cron sama sekali. Meskipun demikian, perusahaan hosting web sering kali tidak menyediakan akses ke, atau dukungan, Cron. Host saya adalah salah satu yang terakhir – mereka mengizinkan Anda untuk menggunakannya, tetapi mereka tidak mendukungnya.

Apa itu Cron?

cron dinamai dari kata Yunani Chronos, artinya waktu. Cron berjalan dalam perulangan berkelanjutan untuk menjalankan tugas yang diakumulasikan oleh Crontab (mungkin dinamai untuk tabulator. Tugas tersebut biasanya disebut sebagai Cronjobs, dan dapat merujuk ke skrip di situs Anda.

Penjelasan Diagram Cron

Bagaimana cara menyiapkan Crontab

Membuat Cron benar-benar berjalan dapat menjadi tantangan, jadi inilah yang saya pelajari dan bagaimana saya melakukannya Jika Suck:

  1. Saya mengatur skrip saya untuk memeriksa Twitter API untuk melihat apakah ada yang membalas @tokopedia. Saya membandingkan pesan-pesan itu dengan pesan yang sudah saya simpan di situs web, memasukkan pesan baru.
  2. Setelah skrip berfungsi, saya mengaktifkan izin bagi Pengguna untuk mengeksekusi skrip (744) dan menambahkan referensi skrip ke file Cronjob saya - lebih lanjut tentang itu nanti.
  3. Saya kemudian harus masuk ke situs web saya melalui SSH. Di Mac, itu perlu membuka Terminal dan mengetik SSH namapengguna@domain.com dengan nama pengguna adalah nama pengguna yang ingin saya gunakan dan domain adalah situs web. Saya kemudian diminta dan memberikan kata sandi.
  4. Saya kemudian mencoba menjalankan skrip langsung dari command prompt dengan mengetikkan nama file dan jalur relatif di server: /var/www/html/myscript.php
  5. Setelah saya membuatnya berfungsi dengan benar, saya menambahkan kode Unix yang diperlukan di baris pertama file: #! / usr / bin / php -q . Saya percaya ini hanya memberitahu Unix untuk memanfaatkan PHP untuk mengeksekusi skrip.
  6. Di baris perintah Terminal, saya mengetik crontab (orang lain mungkin perlu mengetik -e crontab) dan tekan enter… dan hanya itu yang dibutuhkan!

Sintaks untuk File Cronjob Anda

Berkenaan dengan #2 di atas, Cron menggunakan skema cerdik untuk menentukan kapan skrip Anda akan dieksekusi. Sebenarnya, Anda sebenarnya dapat menyalin dan menempelkan ini ke Cronfile Anda (di host saya, terletak di / var / spool / cron / dengan nama file yang sama dengan nama pengguna saya).

# + —————- menit (0 - 59)
# | + ————- jam (0 - 23)
# | | + ———- hari dalam sebulan (1 - 31)
# | | | + ——- bulan (1 - 12)
# | | | | + —- hari dalam seminggu (0 - 6) (Minggu = 0 atau 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Di atas akan menjalankan skrip saya setiap menit. Jika saya hanya ingin menjalankannya sekali dalam satu jam, saya hanya akan mencantumkan berapa menit setelah jam tersebut saya ingin menjalankannya, jadi jika itu berada pada tanda 30 menit:

30 * * * * /var/www/html/myscript.php

Pastikan Anda mengatur hak akses ke file ini sebagai executable juga! Saya menemukan bahwa sintaks, izin, dan menjalankan crontab dari jendela Terminal adalah faktor terpenting. Setiap kali saya menyimpan ulang file, saya akan menemukan izin saya perlu diatur ulang juga!

PEMBARUAN: Jika Anda ingin memastikan pekerjaan berjalan, salah satu cara sederhana adalah memperbarui bidang basis data dengan terakhir kali skrip dijalankan. Jika lebih jarang, Anda dapat membuat skrip email yang dikirim ke diri Anda sendiri.

Sumber Daya Cron Tambahan:

Berapa banyak pekerjaan yang dapat Anda otomatisasi dengan menggunakan Cron?

8 Komentar

  1. 1

    Artikel yang dibahas dengan baik tentang menyiapkan cron, bagi seseorang yang baru mengenal crojobs, bagian tersulit dalam menyiapkan cron adalah untuk mengetahui interval eksekusi cronjob, dan mendapatkan interval yang salah pada percobaan pertama cukup umum. Jika cronjobs Anda sensitif terhadap waktu, ada baiknya untuk menyertakan beberapa kode dalam skrip untuk menggemakan status sehingga Anda tetap mengetahui status pelaksanaan pekerjaan.

  2. 2

    Hai Doug,

    Beberapa hal yang perlu dipertimbangkan saat bekerja dengan cron job.

    Pertama, setelah beberapa lusin, Anda akan berharap memiliki UI, database, dan sintaks yang tampak seperti bahasa Inggris 😉

    Kedua, cron akan mengaktifkan pekerjaan pada waktu yang ditentukan, terlepas dari apakah pemanggilan pekerjaan sebelumnya telah selesai. Jadi menjalankan pekerjaan sekali dalam satu menit yang membutuhkan waktu 2 menit akan dengan cepat menghasilkan banyak pekerjaan yang sama berjalan.

    Selanjutnya, hampir tidak ada pelaporan kesalahan saat terjadi kesalahan, jadi Anda harus menambahkan pelaporan kesalahan Anda sendiri.

    Saya telah membahas ini dalam beberapa cara:
    - membuat aplikasi dipicu melalui cron look di database untuk menentukan apa yang perlu dijalankan. Jalankan sekali satu menit atau jam tergantung pada apa yang Anda inginkan
    - minta setiap skrip membuat file 'kunci' di / tmp dan jika ada, jangan mulai lagi, ini mencegah duplikasi pekerjaan jika Anda tidak menginginkannya
    - jika skrip menemukan file kunci yang lebih lama dari 1 jam (atau apa pun yang menunjukkan Anda mati) kirim peringatan email
    - minta skrip untuk mengirim email jika pekerjaan gagal sehingga Anda tahu ada yang tidak beres
    - lihat kerangka kerja seperti Flux atau penjadwal komersial saat kebutuhan Anda melampaui beberapa skrip

    chris

  3. 4

    Saya juga akan menambahkannya pada kebanyakan sistem Linux / Unix, “crontab -e” adalah yang Anda gunakan untuk mengedit crontab Anda. Saya pikir host Anda (Jumpline) menggunakan versi modifikasi untuk alasan keamanan.

  4. 5

    Saya masih ingat hari pertama saya bertemu Cronnie. Saya telah mendengar banyak hal tentang dia, bahwa dia dapat diandalkan, selalu tepat waktu, tetapi terkadang agak membingungkan tentang niatnya.

    Saya menemukan ini benar karena dia adalah misteri bagi saya pada awalnya. Setelah bertanya-tanya tentang dia, saya dengan cepat mengetahui bagaimana dia suka mengoperasinya. Sekarang, saya tidak bisa membayangkan hari berlalu tanpa dia dalam hidup saya. Dia membuat hal-hal duniawi menjadi menyenangkan, dan mengangkat banyak beban dari pundak saya.

    Secara serius, saya merasa seperti saya hanya menggores permukaan dengan apa yang dapat saya otomatisasi dengan pekerjaan cron. Mereka benar-benar sahabat pengembang. Jika Anda menggunakan seseorang seperti CPanel untuk mengelola server Anda, ini menyediakan antarmuka yang jauh lebih ramah untuk membuat crons. Lengkap dengan menu drop down menit, jam, hari, bulan, dll. Yang membangun garis cron untuk Anda.

  5. 7

    Saya benar-benar melihat ini adalah sesuatu yang harus digunakan setiap pemasar… Apakah ada orang yang dapat menyediakan layanan ini karena kedengarannya agak terlalu "techy"?

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.