bir istemci isteği olmadan sunucu üzerinde çalışan php script

6 Cevap php

I am working on a site that require a php script running on a server without any request, it is a bot script that keeps (not full time but at least once a day) checking client accounts and send alert messages to clients when something happens.

Herhangi bir fikir takdir edilmektedir.

6 Cevap

Eğer linux üzerinde bunu yapmak gerekir varsayarsak, tarayıcı ve hem de CLI herhangi bir php komut dosyası çalıştırabilirsiniz.

You may run a simple php script: <? echo "Ana are mere"; ?>

like this: php -f ./index.php

Dosya izinleri, ve kod içinde sürünme olabilir herhangi bir hata, bellek sızıntıları veya süreci, sürekli çalışır gibi ayrılmamış değişkenler, şimdi çok görünür hale gelecektir konusunda dikkatli olun.

Eğer arka planda her zaman çalışan istemiyorsanız, (http://unixgeeks.org/security/newbie/unix/cron-1.html) düzenli işleri başlatmak edebilmek için crontab bir göz atın.

- Düzenle -

http://stackoverflow.com/questions/45953/php-execute-a-background-process ve http://stackoverflow.com/questions/122834/php-how-to-return-information-to-a-waiting-script-and-continue-processing bir göz atın

Basically you want to start a background process, and you may do this by either using exec() or fsockopen() or a file_get_contents() on your own script probably in this order, if don't have access to exec, or socket functions. Also take a look at http://us2.php.net/manual/en/function.session-write-close.php so the "background script" won't "block" the request and http://us2.php.net/manual/en/function.ignore-user-abort.php

Bunu yapmak için bir cron işi kullanın http://www.cronjobs.org/

Otomatik olarak süresiz istediğiniz herhangi bir aralıkta bir komut arayabilir. Onlar iyi eğer hosting sağlayıcınız bunları desteklemelidir.

Ayrıca sayfanın sonuna benzersiz bir anahtar koyarak düşünmelisiniz

yani. www.yoursite.com/cronjob.php?key=randomstring

anahtar doğru olup olmadığını ve o sadece çalıştırmak istemediğiniz zaman komut dosyası çalışmasını botlar ve diğer kullanıcıları engellemek için, komut dosyasını çalıştırın.

Eğer bir cron işi oluşturmak mümkün değil, o zaman ne istiyor ki bir sayfa oluşturmak ve sadece dışarı gidiyor ve her gün belirli bir zamanda bu sayfayı vurur başka bir makinede (belki PC?) Bir zamanlanmış görev oluşturun.

Bu gerçekten bir hack, ama kesinlikle bir cron işi kurmak olamaz, bu bir seçenek olacaktır.

Evernoob ve Quamis Dediğim gibi, bir cron işi (UNIX / Linux / Mac OS) veya bir zamanlanmış görev (MS Windows) olmasını istiyorum. Eğer PHP yürütülebilir çağırmak ve sonra komut adını hangi durumda Ayrıca, sen, PHP komut satırı arayüzü (CLI) kullanarak PHP komut çalıştırmak ya. Bir alternatif olarak, birisi bir web tarayıcısı konum çubuğuna URL yazdığınız sanki PHP komut dosyası çağırmak için wget (tüm platformlarda availble) gibi bir araç kullanabilirsiniz.

Burada hayal gibi bir php script kullanılan olamazdı. Bir yerden bir istekten sonra apache üzerinden yürütülen çünkü.

Even if you do while(1) in your script, apache/php will automaticly stop your script. Responding to your comment, yes you'll need ssh access to do this, except if your web interface allow you to add cronjob.

Belki başka bir sunucu üzerinde bir program ile idam edilebilir bir hizmet yazmak ve iş yapabilirsiniz.

Eğer sunucuya erişim yok varsa kolay yolu muhtemelen tarayıcı aracılığıyla vurmak olacaktır, ama sen birine istediği zaman her gün aynı aralıklarla URL'sini isabet sizi ya da harici bir komut dosyası gerektirir. Ayrıca kurulum bir program üzerinde lokal olarak çalışır ve sayfayı vurur Selenium test paketi mümkün olabilir. Bu olsa Selenyum ile mümkün ise ben% 100 değilim, bunu gerçekleştirmek için bazı 3. parti uygulamalar gerekebilir.

Eğer deneyebilirsiniz başka bir şey PHP'nin Proses Kontrol İşlevleri kullanma hakkında görmek olacaktır (link). Bunlar arka planda bir deamon ve çalışan bir komut dosyası oluşturmak izin verir. Siz komut sunucu üzerinde çalışan ve programlanmış aralıklarla komutları kapalı ateş tutmak için bunu yapmak mümkün olabilir. Hala olsa ilk defa (tarayıcı istek veya komut satırı ile) çalışan almak için bir yol gerekir.