• 08-06-2022, 17:42:22
    #1
    Selamlar,

    Alt kısımdaki görseldeki gibi bir kodum bulunmakta. Bu kodda id sıralamasına göre for döngüsü kullanarak 20000 satırın satış fiyat hesaplamasını yaptırıp tekrar veritabanında ilgili kısma kayıt ediyorum. (sadece satışı aktif olaran yani status=1 olan satırlara bu işlemi yaptırıyorum. )

    Buraya kadar sorun yok ancak problemim şu; döngü 13879 id'li satırda sonlanıyor ve devam etmiyor, halbuki 14bin'li satırlarda da statüsü 1 olan ürünler mevcut. $id değişkenini ortadan kaldırıp direkt olarak id numarasını verdiğimde de bu satırlara sorunsuz bir şekilde satış fiyatını kaydedebiliyorum ancak döngüye soktuğumda 13879 'a kadar gelip sonrasını yapmamakta.

    Burada sorunu ne yaptıysam anlayamadım; php çalışma süresi limitine mi takılıyor yoksa başka bir problem mi mevcut ücretli/ücretsiz yardım taleplerinizi bekliyorum, sorunumu anlayıp kendim düzeltmem daha iyi idrak etmeme sebep olacaktır, bu nedenle tavsiye ve yönlendirme yapabilirseniz çok sevinirim. İyi Çalışmalar.


  • 08-06-2022, 17:46:09
    #2
    pm iletildi.
  • 08-06-2022, 17:48:22
    #3
    Bunu PHP ile değil de SQL ile yapmanız daha sağlıklı ve hızlı olur.
  • 08-06-2022, 17:54:10
    #4
    set_time_limit(-1); yazıp deneyebilir misiniz hocam. Döngülerin belli bir süresi oluyor ondan sonrasını sonlandırıyor. Tabi bu dediğim kod hosting tarafından çalışmayabilir. O zaman hosting tarafının süreyi artırması gerekiyor.
  • 08-06-2022, 17:55:40
    #5
    mcfearcombat adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    Alt kısımdaki görseldeki gibi bir kodum bulunmakta. Bu kodda id sıralamasına göre for döngüsü kullanarak 20000 satırın satış fiyat hesaplamasını yaptırıp tekrar veritabanında ilgili kısma kayıt ediyorum. (sadece satışı aktif olaran yani status=1 olan satırlara bu işlemi yaptırıyorum. )

    Buraya kadar sorun yok ancak problemim şu; döngü 13879 id'li satırda sonlanıyor ve devam etmiyor, halbuki 14bin'li satırlarda da statüsü 1 olan ürünler mevcut. $id değişkenini ortadan kaldırıp direkt olarak id numarasını verdiğimde de bu satırlara sorunsuz bir şekilde satış fiyatını kaydedebiliyorum ancak döngüye soktuğumda 13879 'a kadar gelip sonrasını yapmamakta.

    Burada sorunu ne yaptıysam anlayamadım; php çalışma süresi limitine mi takılıyor yoksa başka bir problem mi mevcut ücretli/ücretsiz yardım taleplerinizi bekliyorum, sorunumu anlayıp kendim düzeltmem daha iyi idrak etmeme sebep olacaktır, bu nedenle tavsiye ve yönlendirme yapabilirseniz çok sevinirim. İyi Çalışmalar.


    çalışmayı yaptığınız sunucu ayarlarında max_execution_time ve set_time_limit değerlerini kontrol etmenizde fayda var ve tablolarınızda indexleme kullanırsanız işlem daha da kısa sürecektir
  • 08-06-2022, 18:00:03
    #6
    For döngüsü yerine foreach kullanırsanız daha sağlıklı olur.
  • 08-06-2022, 18:07:47
    #7
    php.ini üzerinden set_time_limit ve max_execution_time 'ı artırmama ve set_time_limit(-1); ile denememe rağmen başarılı olmadı maalesef.
  • 08-06-2022, 18:17:22
    #8
    Bu şekilde dener misiniz ?

    $werehouse_variants = $conn->query("SELECT * FROM werehouse_variants LIMIT 25000", PDO::FETCH_ASSOC);
    foreach($werehouse_variant as $listele){
    //kodlarınız try catch bölümünü silerek https://prnt.sc/ZkuzfVOhgsVG
    }
    $id yi $listele["id"] olarak değiştirmeyi unutmayın
  • 08-06-2022, 18:42:31
    #9
    ANILKEN adlı üyeden alıntı: mesajı görüntüle
    Bu şekilde dener misiniz ?

    $werehouse_variants = $conn->query("SELECT * FROM werehouse_variants LIMIT 25000", PDO::FETCH_ASSOC);
    foreach($werehouse_variant as $listele){
    //kodlarınız try catch bölümünü silerek https://prnt.sc/ZkuzfVOhgsVG
    }
    $id yi $listele["id"] olarak değiştirmeyi unutmayın
    Tavsiyeleriniz ve emekleriniz için teşekkür ederim ancak hem foreach'e çevirip hemde hosting firmasından talep ettim limit değerlerini artırdılar ancak ne yazıkki gene 13879 'da takılı kaldık . Başka nelerden kaynaklı olabilir bilemiyorum artık.

    EDİT : Sorunun time limit değerlerinden olmadığına kanaat getirdim. Deneme amaçlı 1-10000 id'li ürünleri bir for döngüsünde, 10000-20000 id'li ürünleri başka bir sayfada ki for döngüsünde çektirdim. 2. sayfada gene 13879 id'den sonrasını alamadım.

    EDİT 2 : Saatlerce arama taramadan sonra 13880 indexli kayıtta bir hata olduğu için buradan sonra yapının bozulduğunu tespit edip düzelttim. Emek ve fikir veren herkese çok teşekkür ederim. Biraz dinlenip tekrar bakmak en güzel sorun çözme yöntemi