WiozenAPI

WordPress'te yapay zekâ yazı botu neden yarıda kalıyor? "Tur takıldı" uyarısı ve LiteSpeed

Kısaca: Çoğu zaman sunucu, uzun süren PHP isteğini iş bitmeden durdurur. Paylaşımlı barındırmada tek bir istek genelde iki dakika civarında kesilir, LiteSpeed ise bağlantısı kapanan isteği hemen sonlandırabilir. Wiozen İçerik Botu bu yüzden her yazıyı ayrı isteklerde üretir, kesilen yazıyı sonraki turda kaldığı adımdan sürdürür ve 8 dakika boyunca ilerleme olmazsa panelde "Tur takıldı" uyarısıyla Kilidi kaldır düğmesini gösterir. LiteSpeed sunucularda panelin önerdiği .htaccess kuralını eklemek kesilmeleri azaltır.

Tur neden yarıda kesiliyor?

Bir yazının üretimi dakikalar sürer: web araması, yazım, editör denetimi, görsel. Bu çağrıların her biri API'nin cevabını bekler. WordPress eklentisi bu bekleme sırasında bir PHP isteğinin içinde çalışır ve PHP isteğinin ne kadar yaşayacağına eklenti değil sunucu karar verir.

İki yaygın sebep var. Birincisi barındırmanın süre sınırı: paylaşımlı paketlerin çoğu tek isteği iki dakika civarında keser. İkincisi LiteSpeed: LiteSpeed belgesine göre sunucu, bağlantısı kapanan bir PHP isteğinin sürecini öldürür. WordPress'in zamanlayıcısı WP-Cron kendi isteğini başlatır başlatmaz bağlantıyı kapattığı için, arka planda çalışan uzun iş LiteSpeed'de ortasında kesilebilir. Süreç öldüğünde PHP'ye hata yazma fırsatı kalmaz; eski sürümlerde bu yüzden günlük boş kalıyor, panel turu hâlâ sürüyor gösteriyordu.

Bot bir turu nasıl parçalara bölüyor?

İçerik Botu 1.5.0'dan beri bir turu tek istekte değil, parça parça işler. Her parça tek bir iş yapar: ya bir kategorinin konularını seçer ya da tek bir yazının sıradaki aşamasını yürütür. Bir yazının üç aşaması var: araştırma ve yazım, editör denetimi, kayıt ve görsel.

Her parçadaki API çağrısının bekleme süresi sınırın altında tutulur: yazım 115 saniye, editör 90 saniye, konu seçimi 80 saniye, görsel 90 saniye, web araması 30 saniye. Süre dolarsa bot cevabı beklemeyi bırakır ve hatayı kendisi kaydeder; süreç sunucu tarafından öldürülmeden önce davranmış olur.

Parça bitince bot sıradakini sitenin kendi admin-ajax.php adresine attığı bir arka plan isteğiyle başlatır. Bu istek ulaşmazsa aynı iş bir WP-Cron olayı olarak da bekler ve siteye gelen ilk ziyaretle sürer. Her parça çalışırken bir kilit tutar; böylece aynı anda iki parça çalışmaz ve zamanlanmış tur, süren turun üstüne binmez (günlüğe "Önceki tur hâlâ sürüyor; bu tur atlandı." yazılır).

"Tur takıldı" ne demek, "Kilidi kaldır" ne yapar?

Tur sürerken Genel bakış sekmesi her 4 saniyede bir güncellenir ve hangi kategoride, kaçıncı yazıda ve hangi adımda olunduğunu gösterir. Son ilerlemeden bu yana 8 dakika geçmişse ya da parçayı işleyen süreç kilidini bırakmadan kaybolmuşsa panel turu takılmış sayar ve şunu yazar: "Tur takıldı", altında hangi adımda kaç dakikadır ilerleme olmadığı.

Kilidi kaldır turu kapatır, kesilmeyi Günlük sekmesine yazar ve kilidi bırakır. Düğmeye basmak zorunda da değilsin: takılma görününce Şimdi çalıştır yeniden açılır ve yeni tur bayat kilidi kendisi kaldırır. Panele kimse bakmasa bile bot her parçada yaklaşık 9 dakika sonrası için bir bekçi olayı kurar; o olay çalıştığında kesilme kaydedilir ve tur "Son tur beklenmedik şekilde durdu" özetiyle kapanır.

Günlükteki satır kesilmenin adımını söyler: [Kategori] Önceki tur "Yazım" adımında kesildi (sunucu zaman sınırı olabilir). Hep aynı adımda kesiliyorsa sebep büyük ihtimalle o adımın süresidir.

Yarıda kalan yazıya ne oluyor?

Yazı atılmaz. Henüz kaydedilmemişse kaldığı aşamayla saklanır ve bir sonraki turun ilk işi olur; günlükte önceki turda kesilen yazının sürdürüldüğü yazar. Bu kayıt 2 gün geçerlidir. O sırada hiçbir kategori etkin değilse kayıt silinmez, bir kategori açılana kadar bekler.

Kesilmeden ayrı bir durum da editörün geç cevap vermesi. Editör 90 saniyede dönmezse tur durmaz; yazı ilk hâliyle kaydedilir ve günlüğe "Editör denetimi uygulanamadı ... Yazı ilk haliyle kaydedildi." yazılır. Görsel kuyruğunun nasıl çalıştığı öne çıkan görsel rehberinde var.

LiteSpeed sunucuda ne yapmalıyım?

Bot sunucunun LiteSpeed olduğunu anlarsa Genel bakış'ta "Sunucunda LiteSpeed çalışıyor" başlıklı bir uyarı gösterir. Uyarıdaki satırları sitenin kök klasöründeki .htaccess dosyasının en üstüne ekle:

.htaccess
<IfModule Litespeed>
RewriteEngine On
RewriteRule wp-cron\.php - [E=noabort:1,E=noconntimeout:1]
RewriteCond %{QUERY_STRING} action=wcb_continue
RewriteRule admin-ajax\.php - [E=noabort:1,E=noconntimeout:1]
</IfModule>

Kurallar yalnız iki isteğe dokunur: WP-Cron ve botun kendi arka plan isteği. Bütün siteye .* ile uygulanan biçim bilerek kullanılmadı; LiteSpeed belgesi bunu önermiyor, çünkü bazı paylaşımlı sunucularda siteyi kilitleyebilir. Bot kuralların işlediğini kendi arka plan isteğinde gördüğünde uyarı kalkar. Uyarı kalkmıyorsa barındırma firmasına noabort ortam değişkeninin .htaccess'ten okunup okunmadığını sor.

Kesilmeler sürüyorsa neye bakmalı?

Kurulumun geri kalanı ve WP-Cron'un ziyaretle tetiklenmesi otomatik makale rehberinde anlatılıyor.

Sık sorulan sorular

Tur yarıda kesilince yazı kaybolur mu?

Hayır. Kaydedilmemiş yazı kaldığı aşamayla 2 gün saklanır ve sonraki turun ilk işi olur. Kaydedilmiş ama görseli eksik yazı görsel kuyruğuna alınır.

"Tur takıldı" uyarısı ne zaman çıkar?

Son ilerlemeden bu yana 8 dakika geçtiğinde ya da parçayı işleyen süreç kilidini bırakmadan kaybolduğunda. Panelde hangi adımda takıldığı yazar.

"Kilidi kaldır" düğmesine basmak bir şeyi bozar mı?

Hayır. Turu kapatır, kesilmeyi günlüğe yazar ve yarım yazıyı sonraki tura bırakır. Aynı işi yeni bir "Şimdi çalıştır" turu da kendisi yapar.

LiteSpeed kuralı bütün siteyi etkiler mi?

Hayır. Yalnız wp-cron.php ve botun kendi admin-ajax isteği için geçerlidir. Sitenin diğer sayfaları eskisi gibi çalışır.

Editör zamanında cevap vermezse yazı yayımlanmaz mı?

Yayımlanır ya da taslağa düşer, kategori ayarına göre. Editör 90 saniyede dönmezse yazı ilk hâliyle kaydedilir ve tur sürer.

Eklentin eski bir sürümdeyse WordPress'in güncelleme ekranından 1.5.11'e geç ya da ürün sayfasından indir; parçalı tur ve takılma göstergesi 1.5.0'dan, yarım yazıyı sürdürme 1.5.8'den beri var.

Hesabını aç

Diğer rehberler: Türkiye'den kredi kartı olmadan yapay zekâ API'si nasıl kullanılır? · OpenAI uyumlu bir API mevcut bir araca nasıl bağlanır? · Yapay zekâ API maliyeti nasıl hesaplanır? · Yapay zekâ API anahtarım sızdıysa ne yapmalıyım? · Yapay zekâ API'siyle görsel nasıl üretilir ve görsel başı maliyeti ne kadar? · Yapay zekâ API'si neden 429 hatası veriyor, nasıl düzeltilir? · Uzun yanıt bekleyen API isteği neden zaman aşımına düşer: akışlı mı, akışsız mı? · Anthropic Messages API mı, OpenAI Chat Completions mı: hangisini kullanmalıyım? · Bağlam penceresi (context window) nedir, 1 milyon token ne işe yarar? · Hangi yapay zekâ modelini seçmeliyim: fiyat, bağlam ve kaliteye göre karar · Düşünen (reasoning) model neden boş cevap döner, düşünme tokenları neden ücretlenir? · API bakiyem neden beklediğimden hızlı bitiyor? Harcamayı istek istek takip etmek · Bir web sayfası yapay zekâya vermek için Markdown'a nasıl çevrilir? · WordPress'te yapay zekâyla otomatik makale nasıl yazdırılır? · Blog için RSS ve Google Trends'ten konu nasıl bulunur? · Yapay zekâyla yazılan içerik Google'da ve yapay zekâ yanıtlarında görünür mü? · WordPress'te yapay zekâyla yazılan makalelere iç bağlantı nasıl ekletilir? · WordPress'te her yazıya birbirine benzemeyen öne çıkan görsel yapay zekâyla nasıl ürettirilir? · Yapay zekâya blog yazısı yazdırırken içerik tarifi (brief) nasıl yazılır? · Yemek tarifi sitesine yapay zekâyla tarif yazdırırken nelere dikkat etmeli? · WordPress eklentisini yapay zekâ API hesabına bağlarken çıkan hatalar nasıl çözülür? · WordPress'te otomatik yazılar neden geç çıkıyor? WP-Cron ve gerçek sunucu cron'u · Yapay zekâ yazı botuyla İngilizce ya da başka dilde blog yazısı nasıl yazdırılır? · "İçerik Botu yazı üretemiyor" uyarısı ne demek? Bot günlüğündeki satırları okumak