• 17-06-2023, 18:56:07
    #1
    2 adet botumuz var 2 botumuz ayrı zaman dillerinde çalışmalı aynı zaman hiçbir şekilde denk gelmemeli birisi 3 dakikada birisi 2 dakikada bir çalışacak şekilde ayarlanmalı

    2 dakikada çalışacak bot --> 2 4 6 8
    3 dakikada çalışacak bot --> 3 6 9 12

    görüldüğü üzere dakika 6 da çakıştılar bunun gibi çakışmalar olmamalı.

    bu hizmeti yapabilcek bir ücretli çalışma arkadaşı arıyorum.

    fiyat bilgisini dmden iletin lütfen
  • 17-06-2023, 18:56:50
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    https://crontab.guru/#0_0_1_*_*
  • 17-06-2023, 18:57:44
    #3
    Anladım, iki botunuzun çakışmaması için uygun bir zamanlama oluşturmanız gerekiyor. Bu durumu engellemek için basit bir çözüm, iki botun da en küçük ortak katlarını kullanmaktır. Verdiğiniz örnekte, bir botun 2 dakikada bir çalıştığını ve diğer botun 3 dakikada bir çalıştığını varsayalım. İlk adımda, bu iki sayının en küçük ortak katını bulalım:
    2 dakika * 3 dakika = 6 dakika
    Bu durumda, birinci bot her 6 dakikada bir çalışacak, ikinci bot ise her 6 dakikada bir çalışacak. Bu şekilde, iki botun çalışma zamanları hiçbir şekilde çakışmayacaktır.
    Eğer bu basit senaryodan daha karmaşık bir zamanlama düzenine ihtiyacınız varsa, daha fazla faktörü dikkate almanız gerekebilir. Bu durumda, bir yazılım geliştirici veya sistem mühendisi size daha spesifik bir çözüm sağlayabilir.
  • 17-06-2023, 19:19:37
    #4
    CodeConjurer adlı üyeden alıntı: mesajı görüntüle
    Anladım, iki botunuzun çakışmaması için uygun bir zamanlama oluşturmanız gerekiyor. Bu durumu engellemek için basit bir çözüm, iki botun da en küçük ortak katlarını kullanmaktır. Verdiğiniz örnekte, bir botun 2 dakikada bir çalıştığını ve diğer botun 3 dakikada bir çalıştığını varsayalım. İlk adımda, bu iki sayının en küçük ortak katını bulalım:
    2 dakika * 3 dakika = 6 dakika
    Bu durumda, birinci bot her 6 dakikada bir çalışacak, ikinci bot ise her 6 dakikada bir çalışacak. Bu şekilde, iki botun çalışma zamanları hiçbir şekilde çakışmayacaktır.
    Eğer bu basit senaryodan daha karmaşık bir zamanlama düzenine ihtiyacınız varsa, daha fazla faktörü dikkate almanız gerekebilir. Bu durumda, bir yazılım geliştirici veya sistem mühendisi size daha spesifik bir çözüm sağlayabilir.
    hocam çok teşekkürler araştırdım örnek bulamadım sanırım bunu yapabilcekte yok orta düzey php bilgim var chatgpt ilede daha iyi oluyor fakat bu konu hakkında bir türlü istediğim sonuçları alamadım
  • 17-06-2023, 19:54:00
    #5
    2 ve 3 er dakikada çalışacak tek dosyada;
            $minute = date("i");
            if ($minute % 2 == 0) {
                //2 dakikada bir çalışacak job
            } else  {
               //3 dakikada bir çalışacak job
            }
    Eğer ikisi ayrı dosya ise;
    2 dakikada çalışcak kod;
            $minute = date("i");
            if ($minute % 2 == 0) {
                // 2 dakikada bir çalışacak job
            }
    3 dakikada çalışcak kod;
            $minute = date("i");
            if ($minute % 2 == 1) {
                // 3 dakikada bir çalışacak job
            }
  • 17-06-2023, 22:57:50
    #6
    MCERAN adlı üyeden alıntı: mesajı görüntüle
    2 ve 3 er dakikada çalışacak tek dosyada;
            $minute = date("i");
            if ($minute % 2 == 0) {
                //2 dakikada bir çalışacak job
            } else  {
               //3 dakikada bir çalışacak job
            }
    Eğer ikisi ayrı dosya ise;
    2 dakikada çalışcak kod;
            $minute = date("i");
            if ($minute % 2 == 0) {
                // 2 dakikada bir çalışacak job
            }
    3 dakikada çalışcak kod;
            $minute = date("i");
            if ($minute % 2 == 1) {
                // 3 dakikada bir çalışacak job
            }
    sorunu yanlış anlamışsınız hocam 2 dakikada çalışan bot 2 4 6 8 diye gidicek 3 dakikada çalışan bot 3 6 9 12 diye gidicek görüldüğü üzere 6 da çakışma olucak mesala benim olayim bundan ibaret
  • 18-06-2023, 00:57:05
    #7
    develepor adlı üyeden alıntı: mesajı görüntüle
    sorunu yanlış anlamışsınız hocam 2 dakikada çalışan bot 2 4 6 8 diye gidicek 3 dakikada çalışan bot 3 6 9 12 diye gidicek görüldüğü üzere 6 da çakışma olucak mesala benim olayim bundan ibaret
    Cevap doğru.

    2, 4, 6, 8, 10, 12, 14 çift sayıdır.
    1,3,9,15 tek sayıdır.

    Çalışan job'un çalıştırıldığı dakikayı alıp, bu dakikanın modunu alırsak, tek sayı mı, çift sayı mı anlarız.
    Böylece çift sayıya sahip dakikalarda sadece biri, tek dakikalarda sadece diğeri çalışır.

    Çalışan işin dakikası çift sayıysa "2 dk job", çalışan işin dakikası tekli sayı ise "3 dk job" çalışacaktır.

    Senin örneğinde 6. Dk çift olduğu için sadece "2 dk job" çalışacaktır. Yani formül doğrudur.


    Tam olarak istediğin buydu.
  • 18-06-2023, 10:20:02
    #8
    MCERAN adlı üyeden alıntı: mesajı görüntüle
    Cevap doğru.

    2, 4, 6, 8, 10, 12, 14 çift sayıdır.
    1,3,9,15 tek sayıdır.

    Çalışan job'un çalıştırıldığı dakikayı alıp, bu dakikanın modunu alırsak, tek sayı mı, çift sayı mı anlarız.
    Böylece çift sayıya sahip dakikalarda sadece biri, tek dakikalarda sadece diğeri çalışır.

    Çalışan işin dakikası çift sayıysa "2 dk job", çalışan işin dakikası tekli sayı ise "3 dk job" çalışacaktır.

    Senin örneğinde 6. Dk çift olduğu için sadece "2 dk job" çalışacaktır. Yani formül doğrudur.


    Tam olarak istediğin buydu.
    zaten o şekilde cronlar aynı mantık bir yerde mutlaka çakışma oluyorl. sorunu php botuna sleep vererek 15 saniye beklemesini ardından calismasini sagladım bir gün bu sorunla karşılacaklar için çözümü sleep vermektir çok saglıklı çalışıyor
  • 18-06-2023, 12:30:52
    #9
    develepor adlı üyeden alıntı: mesajı görüntüle
    zaten o şekilde cronlar aynı mantık bir yerde mutlaka çakışma oluyorl. sorunu php botuna sleep vererek 15 saniye beklemesini ardından calismasini sagladım bir gün bu sorunla karşılacaklar için çözümü sleep vermektir çok saglıklı çalışıyor
    Yaptığın yinede sağlıklı bir yöntem değil. işlem süresi uzarsa yine çakışacaktır.

    Soruna göre cevap doğru. "çalışma dakikası çakışmasın" sorusunun cevabını verdim.

    Sorun şu olmalıydı. "Herhangi bir cron çalışırken başka bir cron işi çalışmasın."
    Bir cron çalışırken çalıştığına dair bir dosya oluştur ve işlem bitince dosyayı sil. Diğer cron çalışırken bu dosya varsa diğer cronun işi bitmediğini anlar ve sonraki tetiklemeye kadar bekler.

    $lockfile = "/tmp/mycron.lock";
    if (file_exists($lockfile)) {
        echo "Başka bir cron işi zaten çalışıyor!";
        exit;
    } else {
        // Lock dosyasını oluştur ve işlemi başla
        touch($lockfile);
    
        // Cron işi buraya gelecek
    
        // Lock dosyasını sil ve işlemi bitir
        unlink($lockfile);
    }