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
cronjob işi verilecektir
8
●330
- 17-06-2023, 18:56:50Kimlik doğrulama veya yönetimden onay bekliyor.
- 17-06-2023, 18:57:44Anladı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:37hocam ç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ımCodeConjurer adlı üyeden alıntı: mesajı görüntüle
- 17-06-2023, 19:54:002 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:50sorunu 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 ibaretMCERAN adlı üyeden alıntı: mesajı görüntüle
- 18-06-2023, 00:57:05Cevap doğru.develepor adlı üyeden alıntı: mesajı görüntüle
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:02zaten 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ışıyorMCERAN adlı üyeden alıntı: mesajı görüntüle
- 18-06-2023, 12:30:52Yaptığın yinede sağlıklı bir yöntem değil. işlem süresi uzarsa yine çakışacaktır.develepor adlı üyeden alıntı: mesajı görüntüle
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); }