Bir PHP komut dosyası kendisi cronjob kullanmadan her saat ya da öylesine koşmak yapmak mümkün mü?

7 Cevap php

Ben senaryoyu bulamıyorum rağmen ben bu kez bir php komut dosyası yapılır gördüm eminim. Otomatik olarak bu komut güncellemeleri için kontrol edin ve ardından bir güncelleştirme varsa kendisini yerini alacak bazı senaryo oldu.

Aslında ben sadece benim PHP komut dosyası otomatik olarak bir saat her 30 dakikada bir çalışacak yapmak mümkün olmak istiyorum, tüm bu gerekmez, ama ben onun mümkünse, cronjobs olmadan bunu yapmak istiyorum.

Herhangi bir öneriniz? Yoksa bile mümkün mü?

EDIT: bir possible duplicate RC bağlantılı olduğunu okuduktan sonra, ben açıklamak istiyorum.

Ben PHP dosyası dışından kaynaklarını kullanmadan tamamen bu yapmak istiyorum. GET isteği göndermek AKA hiçbir dış CronJobs. Ben de 30 dakika boyunca sürekli çalışan komut dosyası tutmak ve uyku olmadan bunu yapmak istiyorum

7 Cevap

Eğer yeteri kadar hit alırsanız bu iş olacak ...

(Dosya, db, vb ..) bir yerde bir son güncelleme zaman saklayın. Yeterli isabet son güncelleme kez daha xx dakika önceydi olmadığını denetleyen bir kodu eklemek alır bir dosya. Bu ise daha sonra komut dosyasını çalıştırın.

O aralığı ile kod çalıştırmak için ya da bazı online cron job services if you wish denemek isteyebilirsiniz belirtilen süre ile PHP'nin sleep fonksiyonunu kullanmak isteyebilirsiniz .

AJAX (uygulamaları bir dizi dışarı orada, "yoksul adamın cron" için google) ya da bazı bazı dış cron gibi hizmet (örneğin bir cronjob kullanmak arka planda planlanan işleri çalıştırmak için gerçek ziyaretçiler çağrıları kullanabilir ya diğer makine). Teorik olarak sadece hayır zaman aşımı ile bir PHP komut dosyasını çalıştırmak ve sonsuza kadar döngü yapmak ve uygun zamanda isteklerini kapalı ateş, ancak komut dosyası bazı ölürse ulaşmak istiyorsunuz tek şey (bir çok etkisiz ve kırılgan bir şekilde cron'u yeniden keşfediyor olabilir cron sadece tekrar çağırır ise nedeni, bu), kendi başına yeniden başlar asla.

Sürekli çalışan komut dosyası tutmak olmadan, o zaman X miktarı yazısının son vadede geçti olmadığını görmek için bir yan rutin çalışmasına kere normal kullanıcı sayfalarını kullanarak (aslında çalıştırmak için garanti değil hackish şey kullanmak zorunda ve olacak ya da eğer bu nedenle,) onu yeniden çalıştırın veya cron gibi harici servisini kullanmak. Sadece sihirli kendisini çağırmak için düzenli bir PHP script için hiçbir yolu yoktur.

Host mysql içeriyorsa 5.1 + db daha sonra belki zaman aşımına tetikleyiciler komut arayabilir için availible? Ben bu misyon imkansız türü sorular gibi, ama oyun ve en iyi cevap için kurallar ne tür hakkında daha fazla bilgi gerekir.

Her iki durumda da, execution time doğru ayarlamanız gerekir böylece komut bunu aşmaz.

Bunu buldum:

<?php 
    // name of your file 
    $myFile="time.db"; 
    $time=file($myFile); 
    if(time()-3600 > $time[0]){ 
        // an hour has elapsed 
        // do your thing. 

    // write the new timestamp to file 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh, time()); 
    fclose($fh); 
    } 

    else{ 
        // it hasn't been an hour yet, so do nothing 
    } 
?>

in here