# Cron Görevlerini Ayarlama ve Yönetme

Source: https://support.kapsulehost.com/tr-tr/cron-jobs

Bir cron işi, bir komutu zamanlanmış şekilde, arka planda çalıştırır; sitenizi ziyaret eden olsun ya da olmasın. Bu kılavuz, KPanel'de bir cron işi eklemeyi, bu platform için programı ve komutu doğru şekilde yazmayı, WordPress'in güvenilmez yerleşik zamanlayıcısının yerine geçmeyi ve bir iş beklediğiniz gibi çalışmadığında çıktıyı bulmayı kapsar.

## Cron KPanel'de Nerede Bulunur

Cron bir siteye aittir, bu yüzden ona ana menüden değil site üzerinden ulaşırsınız:

1. [KPanel](https://kpanel.kapsulehost.com)'e giriş yapın ve sol kenar çubuğunda **Web Siteleri** öğesine tıklayın.
2. İstediğiniz siteye tıklayın.
3. Sitenin kendi menüsünde, **Ayarlar** ardından **Cron** bölümünü açın.

Doğrudan adres `/websites/<site-id>/cron`'dir. Mevcut işlerin bir tablosunu, sitede hiç iş yoksa boş bir durumu göreceksiniz.

![KPanel'de bir site için Cron sayfası, o sitedeki zamanlanmış işleri listeler](https://support.kapsulehost.com/help/screenshots/cron-jobs.13aef775.webp)

## Bir İş Ekleme

Sağ üstte **Cron İşi Ekle** düğmesine tıklayın. Formda üç alan bulunur.

### Program

Altı hazır düğme ifadeyi sizin için doldurur:

| Düğme | İfade |
|---|---|
| Her dakika | `* * * * *` |
| Her 5 dakika | `*/5 * * * *` |
| Her saat | `0 * * * *` |
| Günlük 02:00 | `0 2 * * *` |
| Haftalık Pazar | `0 2 * * 0` |
| Aylık 1. | `0 2 1 * *` |

Ya da kendi ifadenizi **Cron ifadesi** alanına yazın. Sırasıyla beş alan: dakika, saat, ayın günü, ay, haftanın günü:

```
minute  hour  day-of-month  month  day-of-week
```

- `0 3 * * *` her gün saat 03:00'te çalışır.
- `*/15 * * * *` her on beş dakikada bir çalışır.
- `0 9 * * 1` her Pazartesi saat 09:00'da çalışır.
- `30 1 1 * *` her ayın birinde saat 01:30'da çalışır.
- `0 */6 * * *` her altı saatte bir, saat başında çalışır.

### Etiket

Daha sonra tanıyabileceğiniz bir ad, örneğin `WordPress cron` ya da `Nightly stock sync`. İşler tablosunda size gösterilen budur, bu yüzden açıklayıcı yapın: `job 3` sabahın 2'sinde kimseye yardımcı olmaz.

### Komut

Çalıştırılacak kabuk komutu. İşi oluşturmak için **Save** düğmesine tıklayın.

> **Warning:** Tam yollar kullanın. Cron minimal bir ortamda çalışır ve kabuk profilinizin hiçbiri yüklenmez, bu yüzden SSH üzerinden giriş yaptığınızda çalışan sade bir `php` veya göreli bir dizin burada sessizce başarısız olur. Yolun tamamını her seferinde yazın.

## Komutu Yazma

İşler sitenizin kendi sistem kullanıcısı olarak çalışır, bu yüzden ana dizininiz doğru referans noktasıdır ve `~` doğru şekilde çözümlenir. Sitenizin dosyaları şurada bulunur:

```
~/htdocs/yourdomain.co.nz
```

Tam yolu sitenin **Ayarlar**, ardından **SFTP** sekmesinde doğrulayabilirsiniz; burada **Site dosyaları** altında yazdırılır.

Tipik komutlar:

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
```

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
```

```
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
```

> **Tip:** Komutu zamanlamadan önce test edin. Eğer bir `wp` komutuysa sitenin **WordPress**, ardından **Console** bölümüne yapıştırın ya da SSH üzerinden çalıştırın. Hiçbir zaman çalışmayacak bir işi, gece 3'te bir günlük dosyasında bulmaktansa komut isteminde fark etmek çok daha kolaydır.

## WordPress'in Yerleşik Zamanlayıcısının Yerine Geçme

WordPress, yalnızca birisi bir sayfa yüklediğinde tetiklenen kendi sahte zamanlayıcısı WP-Cron ile birlikte gelir. Sakin bir sitede, zamanlanmış gönderiler geç yayımlanır ve e-postalar gönderilmeden kuyruğa birikir. Yoğun bir sitede ise her ziyaretçi programı kontrol etmenin maliyetini öder.

Gerçek bir cron işi her ikisini de çözer. KPanel bu değişimin tamamını sizin için yapar:

1. Siteyi, ardından **WordPress** sekmesini açın.
2. **WP-Cron** bölümünü açın.
3. **Sistem cron etkinleştir** düğmesine tıklayın.

Bu işlem, WP-Cron'u her beş dakikada bir çalıştıran bir program ekler ve sayfa yüklemelerinin de onu tetiklemesini durdurmak için `DISABLE_WP_CRON`'yi ayarlar. Aynı ekrandaki **Sistem cron'unu kaldır**, her iki yarıyı da geri alır.

Bunu elle yapmayı tercih ederseniz, iki adımdır:

**Ziyaretçi tarafından tetiklenen sürümü devre dışı bırakın.** **Ayarlar**, ardından **Dosya Yöneticisi** kullanarak bunu `/* That's all, stop editing! */` satırının üzerine, `wp-config.php` içine ekleyin:

```php
define( 'DISABLE_WP_CRON', true );
```

**Gerçek işi ekleyin.** **Ayarlar**, ardından **Cron** bölümünde:

- Program: `*/5 * * * *`
- Etiket: `WordPress cron`
- Komut: `cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now`

> **Warning:** `DISABLE_WP_CRON` yarısını atlamayın. Her ikisi de çalışırken, her zamanlanmış görev iki kez tetiklenebilir: yinelenen e-postalar, yinelenen sipariş işleme, bir abonelik eklentisinde yinelenen ücretlendirmeler. WP-Cron bölümündeki tek tıklamalı eylemi kullanın, bu başınıza gelmez.

## WooCommerce ve Arka Plan Kuyrukları

WooCommerce, sipariş durumu değişiklikleri, abonelik yenilemeleri, e-postalar ve stok güncellemeleri için arka planda bir kuyruk kullanır. WP-Cron'a dayanır, bu yüzden sakin bir mağazada en çok zarar gören yük tam olarak budur.

Gerçek program devreye girdiğinde, kuyruk her beş dakikada bir işlenir. Bunu wp-admin'de **WooCommerce**, ardından **Status**, ardından **Scheduled Actions** bölümünden izleyin.

Yüksek hacimli bir mağaza `*/2 * * * *`'e geçebilir. Bunun altına inmek nadiren yardımcı olur: iş yapmaktan çok süreç başlatmaya zaman harcarsınız. Bkz. [WooCommerce Kurulumu](https://support.kapsulehost.com/tr-tr/wordpress-woocommerce).

## Mevcut İşleri Yönetme

İşler tablosu her satırda iki eylemle birlikte **Label**, **Schedule**, **Command**, **Son çalıştırma** ve **Status** bilgilerini gösterir:

- **Disable**, bir işi silmeden duraklatır ve onu geri getirmek için **Enable**'a dönüşür. Bunu bir işin soruna neden olup olmadığını test ederken kullanın.
- **Delete**, onu kalıcı olarak kaldırır. Onay istenir ve zamanlanmış çalışmalar hemen durur.

> **Important:** Bir cron işini silmek geri alınamaz. Program, o anda sunucudan kaldırılır. Yalnızca geçici olarak durdurmaya çalışıyorsanız **Disable** kullanın.

## Çıktıyı Bulma

KapsuleHost'un oluşturduğu her işin çıktısı sizin için yakalanır. Standart çıktı ve hatalar, site kullanıcınızın ana dizinindeki bir `cron-logs` dizinindeki bir günlük dosyasına eklenir, her iş için bir dosya.

Bu günlük, neredeyse her "işim çalıştı mı?" sorusunun cevabıdır, çünkü komutun yazdırdıklarını ve ortaya çıkardığı her hatayı kaydeder.

Onu okumak için SSH üzerinden bağlanın ve `~/cron-logs/` içine bakın. SSH anahtar kimlik doğrulaması kullanır, bu yüzden önce sitenin **Ayarlar**, ardından **SSH Anahtarları** sekmesinden genel anahtarınızı ekleyin: bkz. [SSH Anahtarları Ekleme](https://support.kapsulehost.com/tr-tr/adding-ssh-keys).

> **Note:** File Manager ve SFTP hesapları site dizininizle, `~/htdocs/yourdomain.co.nz` ile sınırlıdır ve `cron-logs` onun bir seviye üstünde yer alır. Bu kasıtlıdır: SFTP erişimi olan bir yüklenicinin web sitesi dışındaki her şeyin dışında kalmasını sağlar. Günlüklere ulaşmak için yerel SSH kullanın ya da aşağıda gösterildiği gibi çıktıyı site dizininize yönlendirin.

Çıktının File Manager'ın açabileceği bir yerde olmasını tercih ederseniz, onu kendiniz yönlendirin:

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
```

`2>&1`, hataları normal çıktıyla aynı dosyaya gönderir. Bu olmadan, hatalar hiçbir yere gitmez.

> **Warning:** Site dizininizin içindeki her şey potansiyel olarak web üzerinden istenebilir. Yönlendirilmiş bir günlüğü site kökü yerine `wp-content` altına koyun, kimsenin tahmin edemeyeceği bir ad verin ve hata ayıklamayı bitirdiğinizde silin.

## İyi Uygulama

- **Programlarınızı kademeli hale getirin.** Hepsi `0 2 * * *`'e ayarlanmış altı iş aynı anda başlar. Onları yayın: `0 2`, `10 2`, `20 2`.
- **Gerçekten ihtiyacınız olmadıkça her dakika kullanmayın.** `*/5`, WordPress ve WooCommerce dahil neredeyse her şey için yeterlidir.
- **İşleri kısa tutun.** Aralığından daha uzun süren bir iş, bir sonraki çalıştırmayla çakışır.
- **Gürültülü her şey için çıktıyı yönlendirin**, böylece gevezelik eden bir iş diskinizi doldurmaz.
- **Listeyi ara sıra gözden geçirin.** Kaldırdığınız bir eklentiden kalan işler çalışmaya devam eder.

## Sorun Giderme

**İş hiç çalışmıyor gibi görünüyor.** Önce yolu kontrol edin. Günlük dosyasını açın. Ardından durumun **Active** olduğunu, **Disabled** olmadığını doğrulayın. Ardından aynı komutu SSH üzerinden çalıştırın ve ne söylediğine bakın.

**Günlükte "command not found" hatası.** Eksik bir tam yol. Çıplak ad yerine `/usr/bin/php`, `/usr/bin/wp`, `/usr/bin/curl` kullanın.

**İzin reddedildi.** İş, sitenizin sistem kullanıcısı olarak çalışır. O kullanıcının, komutun dokunduğu her şeye sahip olması ya da en azından onu okuyabilmesi gerekir. İzinleri [File Manager Kullanımı](https://support.kapsulehost.com/tr-tr/file-manager)'nda kontrol edin.

**WordPress görevleri hâlâ geç çalışıyor.** Değişimin her iki yarısının da yerinde olduğunu doğrulayın: program **Ayarlar**, ardından **Cron** içinde mevcut ve `DISABLE_WP_CRON` ayarlanmış. **WordPress** sekmesindeki **WP-Cron** bölümü her ikisinin de mevcut durumunu gösterir.

**İş çalışıyor ama bu sırada site yavaş.** Onu daha sakin bir saate taşıyın ya da işi daha küçük parçalara bölün. Site düzeyindeki kaynak kullanımı **Performans** altında görülebilir: bkz. [Web Sitesi Hızını İyileştirme](https://support.kapsulehost.com/tr-tr/website-speed).

**Bir eklenti güncellemesinden sonra bir iş çalışmayı durdurdu.** Komut yolu değişmiş olabilir. Günlüğü kontrol edin, ardından eski işi silip düzeltilmiş bir tane ekleyerek komutu işler tablosundan güncelleyin.
