• 27-09-2020, 16:26:42
    #1
    Merhaba,
    Elimde 1000 tane cron job linki ve bunlarin dakikada 1 topluca paralel olarak calismasi lazim. Serverim dedicated 64gbram o yuzden kaldirabilicegini dusunuyorum. Nasil yapabilirim boyle bir seyi?
  • 27-09-2020, 16:50:49
    #2
    Merhabalar; Queue kullanmalısınız. Cronlar sadece queue'ya işleri atmalı ve kuyruktan çalışmalı. Apache Kafka kurup yapılandırabilirseniz altından kalkabilirsiniz.
  • 27-09-2020, 17:17:42
    #3
    DestekHostingVMH adlı üyeden alıntı: mesajı görüntüle
    Merhabalar; Queue kullanmalısınız. Cronlar sadece queue'ya işleri atmalı ve kuyruktan çalışmalı. Apache Kafka kurup yapılandırabilirseniz altından kalkabilirsiniz.
    hocam redis, memcached le nasıl yapabilirim?mesela 1000linki tek cron komutuyla çalıştırabilirmiym?
  • 27-09-2020, 17:38:17
    #4
    manas23 adlı üyeden alıntı: mesajı görüntüle
    hocam redis, memcached le nasıl yapabilirim?mesela 1000linki tek cron komutuyla çalıştırabilirmiym?
    Bakın burada elinizdeki 1000 tane corn job'ın ne iş yaptığı, ne kadar sürede yaptığını bilmiyorum. 1000 tane process aynı anda çalıştıracaksınız. Bu çok doğru bir iş değil. Bunları dediğiniz gibi tek bir cronda sıralı bile yapsanız ki buda tek process te yapmak demek oluyor buda doğru değil, toplam da 5 dakika da bittiğini varsayalım yani küçük işler olduğunu düşünelim. Her bir iş için ram de kaplanan yerinde düşük olduğunu varsayalım. Toplamda 5 dakika da biterse ve siz her dakika aynı işi tekrar tetiklerseniz hangi işlemci olursa olsun eninde sonunda bunu yapamaz hale gelecektir. Programlama mantığı olarakta yanlış bir yaklaşım. Burada yapılacak tek şey dediğim gibi queue'ya iş bırakmanız ve birden fazla consumer la bunu dinlemeniz. Kaç consumer ayağa kaldıracağınız da elinizdeki işlemlerin süresine göre optimize edersiniz. Gerekirse aynı queue yu başka makinelere de dinletebilirsiniz. Redis ya da Memcache bir işinize yaramaz en fazla veriyi Ram'e yazmış olursunuz. Queue yu da Ram' e yazacaksınız büyük ihtimalle zaten. Diske de yazabilirsiniz orası alabileceğiniz risk e göre size kalmış.
  • 27-09-2020, 17:40:48
    #5
    1 dakikada 1000 işlemin biteceğine inanıyorsanızda PThread class ları var PHP de onları inceleyebilirsiniz. PHP thread based bir dil olmadığı için multi threading yapamaz ama bu classlarla multi process olarak çalıştırabilirsiniz.
  • 27-09-2020, 17:43:09
    #6
    DestekHostingVMH adlı üyeden alıntı: mesajı görüntüle
    Bakın burada elinizdeki 1000 tane corn job'ın ne iş yaptığı, ne kadar sürede yaptığını bilmiyorum. 1000 tane process aynı anda çalıştıracaksınız. Bu çok doğru bir iş değil. Bunları dediğiniz gibi tek bir cronda sıralı bile yapsanız ki buda tek process te yapmak demek oluyor buda doğru değil, toplam da 5 dakika da bittiğini varsayalım yani küçük işler olduğunu düşünelim. Her bir iş için ram de kaplanan yerinde düşük olduğunu varsayalım. Toplamda 5 dakika da biterse ve siz her dakika aynı işi tekrar tetiklerseniz hangi işlemci olursa olsun eninde sonunda bunu yapamaz hale gelecektir. Programlama mantığı olarakta yanlış bir yaklaşım. Burada yapılacak tek şey dediğim gibi queue'ya iş bırakmanız ve birden fazla consumer la bunu dinlemeniz. Kaç consumer ayağa kaldıracağınız da elinizdeki işlemlerin süresine göre optimize edersiniz. Gerekirse aynı queue yu başka makinelere de dinletebilirsiniz. Redis ya da Memcache bir işinize yaramaz en fazla veriyi Ram'e yazmış olursunuz. Queue yu da Ram' e yazacaksınız büyük ihtimalle zaten. Diske de yazabilirsiniz orası alabileceğiniz risk e göre size kalmış.
    DestekHostingVMH adlı üyeden alıntı: mesajı görüntüle
    1 dakikada 1000 işlemin biteceğine inanıyorsanızda PThread class ları var PHP de onları inceleyebilirsiniz. PHP thread based bir dil olmadığı için multi threading yapamaz ama bu classlarla multi process olarak çalıştırabilirsiniz.
    hocam sizin dediğiniz gibi queue ya alarak 5 dakika bir çalışmasını nasıl sağlayabilirim? hiç anlamam server işlerinden, serverıda patlatmak istemiyorum.
  • 27-09-2020, 17:46:42
    #7
    Serverla bir ilgisi yok bunun. Sizin için Apache Kafka configurasyonu zor olacaktır. Öncelikle RabbitMQ ile bir deneyin. Bu burada birkaç mesajla anlatabileceğim kadar kısa bir konu değil. php-amqp extension kurmanız gerekiyor sunucu tarafında. Daha sonra composer dan bir RabbitMQ library si ekleyip onun dökümanından ilerleyebilirsiniz. RabbitMQ ile ilgili de araştırma yaparsanız konuya hakim olabilirsiniz.