Otomatik Veritabanı okur / her saniye yazmak

4 Cevap php

Ben bir oto-teklif sistemine sahip bir açık artırma sitesi, yapıyorum. Bu sistem insanların orada olmak zorunda kalmadan ihaleleri yapmanıza olanak sağlar.

Benim soru, böyle bir sistemi uygulamak için nasıl. Ben php dosyalarını yaptık ve her şey hazır, ben her saniye yeniler bir html sayfası yaptık. Bu çalışır, ancak daha iyi bir çözüm var merak ediyorum.

Denedim İkinci seçenek web sayfasını her saniye açan bir java uygulaması yapıyordu. Bu bellek / CPU "bir sürü" tüketir. Ayrıca, bir yerde bir bellek sızıntısı olduğunu düşünüyorum.

Ben CentOS ve Plesk ile özel bir linux sunucu üzerinde bu uygulamayı çalıştırıyorum, bu yüzden alternatif bir yeri vardır eminim.

Örneğin:

  1. Bir PHP dosyası php dosya uyur bir dakika döngüler her dakika, yürütür A cronjob.

  2. 1 saniye uyur ile döngüler Bir php dosyası.

  3. Bir saniye sonra başka cronjob yürütür ve zamanlamaları Bir cronjob.

  4. MySQL scheduler, ama bunu uygulamak için nasıl bilmiyorum, ve ben de diğer yazma için db kilitler duydum.

  5. Ben de CLI, Perl, Python komut duydum, ama ben bunlardan herhangi aşina değilim.

Bu seçeneklerden herhangi bir bilgisi olan birisi bu konuda bana biraz ışık tutacak misiniz lütfen. Ben hız ve bellek kullanımı açısından en uygun bir çözüm arıyorum.

Birisi başka bir alternatif bir çözüm varsa ben de duymak mutluluk duyarız.

4 Cevap

Her biri ikinci performans CLI için yazılmış bir betik yapacak önemli olduğundan CronJobs, ayrıca i şiddetle olduğu gibi bir "sayfasını" kullanarak karşı öneririm, bir değil, bir seçenek böyle bir küçük aralık olduğunu.

Ne yapmam olacaktınız:

  • When someone activates the auto-bid you should register that in a database.
  • Create a Daemon which polls the database for entries to be executed at that moment.

Kim, her döngüden sonra komut uyku yapma very dikkatli olmak gerekir ya da veritabanı aşağı getirecektir.

Bir yan not olarak, gerçekten her saniye idam edilmesi gerekir? Zihnim otomatik teklifleri olaylar tarafından tetiklenen sol 10 saniye varken, yani birisi size daha fazla teklif. O ses çok güzel uygulamak ve daha az kaynak yoğun (ve aynı zamanda oto-teklifleri olayları dinleyerek, orada bir cini kullanabilirsiniz, ama bu başka bir hikaye :)

Belirli bir zaman aralığında söz PHP komut yürüten bir cron işi oluşturun. You can execute the PHP script from the command line bu agnostik bağlam ($_GET, $_POST ve benzeri erişimi gerektirmeyen) bir şekilde yazılmış eğer.

Peki, temelde veri veritabanına eklenen edildikten sonra, gerçekleşmesi için bir şey tetikler anlamına gelir, "olay tabanlı yayıncılık" çeşit deneyebilirsiniz.

Case in point, MySQL triggers or even a simple php script that ON INSERT for a new bid, you check if anyone else has placed maximum bid that is higher then that bid.
If they did, then update the new highest bid and the current top bidder.

Isteklilerin bir dizi varsa, bir döngü yapmak ve en yüksek teklifi kim alacak görmek isteyebilirsiniz.

Nokta gerçekten etrafında koşmak gerektiğini ve bu iş sorunu anlamaya işleri planlanan olmasıdır. Ben tetikleyicileri veya olayları kullanmanızı öneririz.

Zaten iş yok bir sayfa varsa, bir kıvrılma komutu her dakika çağıran bir cron zamanlayabilirsiniz (bukle http://your/page.php). Tek bilmeniz gereken dışından denilen alırsa bir sorun olmalı Eğer sayfanızı korumak için gereken olmasıdır.