Etkili bu cron işi yürütmek nasıl?

2 Cevap php

Ben 200 satırlık bir tablo var. Ben masanın üzerinde ekleme / güncelleştirme işlemi çeşit gerçekleştirmek için bir cron işi her 10 dakikada koşuyorum. Işlemi bir seferde sadece 5 satır üzerinde cron iş çalışan her zaman yapılması gerekir. Yani ilk 10 dakika kayıtlarında 1-5, böylece kayıtlar 20. dakikada 5-10 ve güncellenmektedir.

Cron 20. kez çalıştırıldığında, tablodaki tüm kayıtların tam olarak bir kez güncellendi olurdu. Bu, en azından elde edilmesi budur. Ve sonraki cron işi yine işlemi tekrarlamak gerekir.

The problem: is that, every time a cron job runs, the insert/update operation should be performed on N rows (not just 5 rows). So, if N is 100, all records would've been updated by just 2 cron jobs. And the next cron job would repeat the process again.

İşte bir örnek:

Bu benim şu anda (200 kayıt) sahip tablodur. Her zaman bir cron işi geçerli zamanın MD5 değeri ile time_md5 alanını (PHP bir değişken olarak ayarlayın) N kayıtlarını almak ve güncellemek gerekiyor yürütür.

+---------+-------------------------------------+ 
|      id | time_md5                            | 
+---------+-------------------------------------+ 
|      10 | 971324428e62dd6832a2778582559977    |  
|      72 | 1bd58291594543a8cc239d99843a846c    |  
|       3 | 9300278bc5f114a290f6ed917ee93736    |  
|      40 | 915bf1c5a1f13404add6612ec452e644    |  
|     599 | 799671e31d5350ff405c8016a38c74eb    |  
|      56 | 56302bb119f1d03db3c9093caf98c735    |  
|     798 | 47889aa559636b5512436776afd6ba56    | 
|       8 | 85fdc72d3b51f0b8b356eceac710df14    |     
|      .. | .......                             |     
|      .. | .......                             |     
|      .. | .......                             |     
|      .. | .......                             |     
|     340 | 9217eab5adcc47b365b2e00bbdcc011a    |  <-- 200th record   
+---------+-------------------------------------+ 

Tüm 200 kayıtlar kez güncellenmektedir kadar Yani, ilk kayıt (id 10), birden fazla güncellenen olmamalıdır - tüm kayıtlar bir kez güncellenmektedir kez süreci baştan başlamak gerekir.

Ben bu sağlanabilir konusunda bazı fikir var, ama bunu yapmanın daha etkili yollar vardır eminim.

Herhangi bir öneriniz?

2 Cevap

Sen (küme yönetimi gibi) Kırmızı / Siyah sistemini kullanabilirsiniz.

Temelde, tüm satırlar siyah olarak başlar. Eğer cron'u çalıştırdığınızda, bu "Kırmızı" olarak güncellenen satırları işaretlemek olacaktır. Tüm satırlar kırmızı sonra, geçiş ve şimdi siyah olmak üzere tüm kırmızı satırları dönmeye başlayacak. Sen gidiyor bu almaşını tutmak ve bu kez bunları güncelleştirmek kalmamak etkili satırları işaretlemek için izin vermelidir. (Bunu Crons arasında paylaşılır böylece bir dosya ya da bir şey istediğiniz rengi hedef mağaza olabilir)

Ben sadece php script cron ile her 10/5 dakika çalıştırın ve daha sonra mantık kalanını gerçekleştirmek için PHP'nin zaman ve tarih fonksiyonları kullanabilirsiniz. Eğer o zaman yapamıyorsanız, küçük bir dosyada değişkeni işaretleme pozisyon depolayabilir.