"Arka plan" işlevini çalıştırın

4 Cevap

Objects:

  • Object Sale
  • n Nesne Kullanıcı Nesnesi Satış katılacak
  • Her kullanıcı bir nesne Ajan oluşturabilirsiniz
  • Her Ajan nesne Satılık Licitation (zaman zaman ve bazı koşulları ile) oluşturur n Nesne olacak

Goal:

Bir Satış sonuna bırakılmıştır sadece 5 saniye olduğunda, bu Satılık olduğunu tüm aracıları kontrol edip satılık bir licitation yapmamış Agent'dan licitation nakleder ki bir işlev oluşturun uzun

Bu, ajanlar onları ihaleleri sırasında uzak olmasını sağlayan licitations gönderme kullanıcıları yerine sorumlu olacağını beri sürekli çalışıyor olması gereken bir şeydir.

My question

Updated (My question wasn't clear enough):

At index page of the sales I have a script with javascript that calculates the time left on a sale, so I can know when a sale should call the function to check for agents and place their bids, but my newbie question is: if I make a call for the function at this page, will this only work if the user has the page open? Or if he closes the function won't be called anymore? Because I need this to still work even the user closes webpage. DaMacc already answered that this doesn't work

Updated (05/01/2010)

Ben zaten bu işlevi yarattık. Fonksiyon sonuna bırakılmıştır 5 saniye tüm satış, o zaman tüm maddeleri aramak ve sonra seçilen satışa uzun bir licitation yapmamış ajan bir teklif yer bulacaksınız. Şimdi ben her saniye çağrılacak bu işlev gerekir. Ben cron kullanmak için gidiyoruz ama cron has 1-minute boundaries edildi. Ve ben sunucu üzerinde çalışan ve ajan sahibi kullanıcı bağlı değil, bu işlev gerekir.

Herhangi bir öneriniz?

PS: Ben yapmaya çalışıyorum bidagents bu tür bazı ihaleleri web siteleri vardır, ben bir örnek olarak kullanmak reffer ... Ama ben yapmak için izin emin değilim burada ...: S

Teşekkürler.

4 Cevap

Eğer cron zaman her X miktarda çalıştırmak için bir görev olarak ayarlamak için böyle bir şey yapmak ve daha sonra kullanmak gerekiyor ne olursa olsun yapmak için normal işlevi oluşturun.

Edit to expand on comments

Bu durumda muhtemelen bir kaç çözüm birleştirerek daha iyi olur. Belirtildiği gibi this question, sana bir script her dakika aramak için cron ve bu komut size bir döngü içinde süreci çalıştırmak öneriyoruz.

Dikkat etmeniz gereken bazı şeyler:

  • Her yürütme ne kadar sürecek?
  • Her döngünün sonunda time_sleep_until gerekir ya da komut dosyası cron komut dosyası birden çok kez çağrı gerekir bu durumda, çalıştırmak için 1 saniye daha uzun sürer.
  • Script size komut dosyası olarak daha fazla kaynak alıyor her dakika önceki dakikalık henüz bitmiş değil denilen durum var istemiyorum olarak çalışmakta ne kadar süredir takip emin olun.

Yazısının başında, varsa başka bir komut almış gibi, (komut çıkmak, bir dakika senaryonun başından beri geçti olmadığını kontrol edin, sonra her döngünün başında, şimdiki zaman not almak şimdi teşekkürler) cron.

Umarım bu yardımcı olur. Bu anlamda bir çok yapmaz ve ben onu biraz temizlemek için çalışacağım, bana bildirin.

Bu sizin için ne arıyorsanız olup olmadığını merak ediyorum:

function execInBackground($cmd) {
    if (substr(php_uname(), 0, 7) == "Windows") {
        pclose(popen("start /B ". $cmd, "r"));
    } else {
        exec($cmd . " > /dev/null &");
    }
}

Daha sonra aşağıdaki yöntemi kullanarak arka planda bir php işlemini başlatabilirsiniz:

execInBackground("php path/to/file.php " . $param01 . " " . $param02);
// where $param01 and $param02 are optional values that you may want to
// send to the page. Equivalent to GET parameters of URL.
// You can include as many parameter values as you want.

//Example:
execInBackground("php automation/bidChecker.php daniel 53.25");
// automation/bidChecker.php is the file to be executed
// daniel can be the username
// 53.25 can be the bid value

Ve arka planda çalışan PHP dosyasında, aşağıdaki yöntemi kullanarak parametre değerleri erişebilirsiniz:

$param01 = $argv[1]; // assigns daniel as value
$param02 = $argv[2]; // assigns 53.25 as value

Kullanıcı bir şey yaptığında bu işlem bir komut vadede içinde başlatılabilir. Eğer programlama işlemi kırmak kadar da kullanıcı sayfayı terk bile yayınlanmaya devam edecek.

Bu sizin için ne arıyorsanız eğer ben gerçekten bilmiyorum. Eğer öyleyse, şimdi var.

Zend_Queue gibi bir sıra, kullanın: http://framework.zend.com/manual/en/zend.queue.html. Sadece sonsuz bir döngü (veya iki) çalıştırın ve web uygulama gönderilen iletileri göndermek

Bunun için de tüm Javascript kullanarak içine baktı mı? Bu çeki çalıştırmak için ihtiyacını tetikleyen bazı olaylar varsa, o gitmek için yol olabilir.

Sen kullanan her sayfada bulunan bir js fonksiyon yazabiliriz setInterval/clearInterval javascript her birkaç saniyede bir sunucuya bir AJAX isteği göndermek için işlevler ve koşullar olup olmadığını dayalı geri tarayıcıya farklı bir yanıt gönderebilir bir araya geldi ya da değil. (Bant genişliği bu olsa ile ilgili bir sorun olabilir)

I jQuery içine bakarak ve bunun için AJAX fonksiyonları bulunuyor kullanarak öneriyoruz.