lostyazilim
tr.link

Cron Jobs İle İlgili Kafama Takılan Şey

19 Mesajlar 2.695 Okunma
acebozum
tr.link

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Arkadaşlar merhaba

Bugün değişik birşey fark ettim. Anlatmam için öncelikle kodları göstereyim.

for($a=1;$a<21;$a++){

sleep(30);

file_put_contents(__DIR__.'/test'.$a.'.log','');

}


Bu kodları php dosyasına kaydedip, tarayıcı üzerinden çalıştırdığımda 2 adet log dosyası oluşturduktan sonra timeout hatası verip bağlantı sonlanıyor. Buraya kadar sorun yok. Zaten normali de budur.

Fakat aynı php dosyayı cron ile tetikleyince 20 tane log dosyası oluştu. (Toplam 10 dk sürdü tabiki.)

Dipnot: Cronda sadece bir kere çalışsın diye ayarladım. Yani saat 23:28 'de çalışsın şeklinde...

Birinde timeout sınırını takılırken, cronda takılmıyor. Aradaki fark nedir? Bilen biri açıklayabilir mi?

Başka bir hostta denedim. Yine aynı durum söz konusu.

Şimdiden teşekkürler.
 

 

.
wmaraci
reklam

kelebek kelebek WM Aracı Kullanıcı
  • Üyelik 11.05.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Geliştirici
  • Konum Malatya
  • Ad Soyad E** K**
  • Mesajlar 3142
  • Beğeniler 60 / 764
  • Ticaret 5, (%100)
Galiba basit bir mantık kurarsak dosyayı çalıştırıyor kapatıyor sonra tekrar çalıştırıyor böyle bir mantık olabilir
 

 

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Dediğiniz gibi değil. Çünkü dosya adları şu şekilde oluyor.

test1.log
test2.log
test3.log
...
...
...
test20.log
 

 

.

kelebek kelebek WM Aracı Kullanıcı
  • Üyelik 11.05.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Geliştirici
  • Konum Malatya
  • Ad Soyad E** K**
  • Mesajlar 3142
  • Beğeniler 60 / 764
  • Ticaret 5, (%100)
Buraya da bakabilirsin detaylı açıklamalar mevcut

http://www.thesitewizard.com/general/set-cron-job.shtml
 

 

wmaraci
wmaraci

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
I don't speak english. :(
 

 

.

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Dosya oluşturma, yazma ve kapama işlemlerinden birinde muhtemel açık kalıyordur.

file_put_contents metod 3 işlemida sırasıyla yapıyor. file_put_contents bu metodu true yada false değeri dönüyor. Bu değeri elde etmek için bir değişkene atayıp, dönen değerleri yazdırırsanız. En azından şundan emin olabilirsiniz.

for loop içine girdi 1. değeri aldı dosyaismi - dönen değer test1.log dönen değer şeklinde. Eğer arada false değerler dönüyorsa mutlak metod işini bitirmeden ikinci değerin geliyor demektir. Bu durumdada dökümentasyondan okuduğum kadarıyla açık olan dosyanın içine gelen değeri append ediyor.

Kaynak : http://tr2.php.net/file_put_contents

Bu sadece bir öngörü : CronJob kısmına bakamadım ama eğer cronjob php context i içinde tetiklenip, çalışıyorsa yani cronjob'ın yönetimini php yapıyorsa, thread safe özelliğe sahip olduğundan dolayı olabilir, lock layıp işlem bitene kadar tutuyordur, yeni bir işlem gelince onu sıraya alıyordur.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Kodlara dikkat edin. 30 sn sleep uyguladım. Yani 20 dosyanın oluşması için 10 dakika geçmesi gerekir.

Tarayıcıdan cron.php yi tetikleyince 60 saniyeden sonra timeout oluyor ve sadece 2 dosya oluşturmuş oluyor. Ama cron ile yapınca 10 dk sonunda 20 dosya oluşmuş oluyor.
 

 

.

marten marten yok Kullanıcı
  • Üyelik 23.07.2012
  • Yaş/Cinsiyet 37 / E
  • Meslek Maden Mühendisi
  • Konum Karabük
  • Ad Soyad E** Y**
  • Mesajlar 126
  • Beğeniler 24 / 24
  • Ticaret 1, (%100)
localhostta denermisin? sonuc ne olcak
 

 

soulmy soulmy WM Aracı Kullanıcı
  • Üyelik 12.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Öğretmen
  • Konum Samsun
  • Ad Soyad O** Y**
  • Mesajlar 1722
  • Beğeniler 398 / 400
  • Ticaret 20, (%100)
Sadece 2 dosya oluştu ve timeout hatası verdi.
 

 

.

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Php execution time ile alakalı bir durum kanımca.

http://www.php.net/manual/en/function.set-time-limit.php

The default limit is 30 seconds or, if it exists, the max_execution_time value defined in the php.ini.


Default değeri 30 saniye imiş. Dosya işlemlerinde çok küçükde bir değer olsa zaman aldığından execution timeout a düşüyordur. 10 saniyeye çekip denermisin.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al