PrestaShop CRON görevleri (dışa aktarımlar, senkronizasyonlar) çalışmıyor
Günlük bir CSV dışa aktarımı gibi bir PrestaShop CRON görevi neredeyse hiçbir zaman PrestaShop'un kendisi tarafından çalıştırılmaz: genellikle bir token parametresiyle korunan belirli bir URL'dir ve barındırıcıdaki gerçek bir sistem cron'unun bunu düzenli aralıklarla çağırması gerekir. Her gün otomatik dışa aktarım vaat eden bir eklenti kurmak, barındırıcı tarafında bu cron kaydı olmadığı sürece tek başına yeterli değildir.
Zamanlanmış görev, dahili bir zamanlayıcı değildir
Her gün otomatik dışa aktarım vaat eden bir eklenti, aslında yalnızca index.php?controller=...&token=... gibi çağrılması gereken bir URL hazırlar. PrestaShop bu işlemi kendi başına tetiklemek için sürekli olarak saati izlemez.
Bu URL'yi düzenli aralıklarla çağırması gereken şey, barındırıcıda kurulan gerçek bir sistem cron'udur; bir crontab kaydı veya müşteri panelindeki karşılığı. Bu kayıt olmadan görev, test için elle tıklandığında kusursuz çalışır ama sonrasında kendiliğinden asla tetiklenmez. Bu belirtinin arkasındaki en sık karışıklık budur.
Neden test sırasında çalışıyor ama kendiliğinden hiç çalışmıyor
Bazı giriş seviyesi paylaşımlı barındırma paketleri gerçek bir sistem cron'u oluşturmayı sınırlar, hatta hiç izin vermez; ya da yalnızca yüksek bir minimum aralıkla sınırlı sayıda kayda izin verir. Eklenti kötü tasarlanmış gibi görünür, oysa barındırıcı tarafında eksik olan şey bir cron programlama imkânının kendisidir.
Bir diğer sık neden: bir HTTP çağrısının izin verdiği süreden daha uzun süren bir betik. Klasik bir web isteğiyle tetiklenen bir cron genellikle birkaç on saniyelik bir çalışma süresiyle sınırlıdır; büyük bir kataloğu işleyen bir dışa aktarım veya senkronizasyon bu süreyi aşıp yarıda kesilebilir, bu da hiçbir şekilde açıkça bildirilmez.
Neyi kontrol edip yapılandırıyorum
-
Beklenen tam URL
Genellikle zamanlanmış görevin veya ilgili eklentinin yapılandırma ekranında görünen, token parametresiyle birlikte tam URL'yi alıyorum.
-
Barındırıcıda gerçek bir cron'un mevcut olup olmadığı
Barındırma paketinin, gerçek ihtiyaca uygun bir sıklıkla (günlük, saatlik...) bir sistem cron kaydı oluşturmaya izin verdiğini kontrol ediyorum.
-
Betiğin çalışma süresi
İşlem bir HTTP çağrısının izin verdiği süreyi aşıyorsa, işin gruplar hâlinde bölünmesi mi yoksa komut satırından çalıştırılmaya geçilmesi mi gerektiğini kontrol ediyorum.
-
Çalıştırmanın gerçek sonucu
Otomatik olarak çağrılan URL'nin, oturum veya izin eksikliğinden kaynaklanan sessiz bir hata değil, elle yapılan çağrıyla aynı sonucu ürettiğinden emin oluyorum.
İlgili sayfalar
-
Özel PrestaShop modülü geliştirme
Bir dışa aktarım betiğinin gruplar hâlinde bölünmesi veya HTTP yerine komut satırından çalıştırılmaya uyarlanması gerektiğinde.
-
PrestaShop'u 1.7 veya 8'e geçirme
Zamanlanmış görevlerin, bir barındırma veya sürüm değişikliğinden sonra neden yeniden kontrol edilmesi gerektiği.
-
Yavaş yüklenen PrestaShop mağazası
Arka planda çalışan ağır bir işlemin, ziyaretçilerin gördüğü sayfaları da nasıl yavaşlattığı.
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.