2011-07-28 22 views
12

Sunucuya tam erişime sahip olsaydım, bunu yapmanın bir yolu olduğunu anlayabiliyordum, ancak sorun sadece FTP erişimi'dan başka bir şey bırakmayan bir barındırma hizmetidir.Bir PHP betiğini periyodik olarak yürütmenin en iyi yolu?

ben vs Ancak senaryo nedeniyle yığınlaşmasım (çalıştırmak için 60 saniye kadar alabilir, modası geçmiş/kırık içeriği, agrega yeni içerik için kontrol kullanılmadığı dosyaları silmek için periyodik bir PHP komut dosyasını çalıştırmak istiyorum

içerik) ve siteyi ziyaret ettikten sonra bir saat önce web sitesini ziyaret eden ilk kullanıcının bir isteğini işlerken bir eşek gibi hissediyorum: P

Ev bilgisayarımın 7/24 isteklerini planlamak için ayrılmıyor. bir seçenek.

+3

tarihinde, hizmetler çok bu teklif. – Wrikken

+2

Komut dosyasını HTTP üzerinden çalıştırıyorsanız, yürütme zaman aşımlarını dikkate alın. PHP'nin betiği normalden daha uzun süre çalıştırmasına izin vermek için 'set_time_limit()' işlevini kullanabilseniz de, bazı web sunucularının (Apache) değiştiremeyeceğiniz kendi işlem süresi sınırlamaları vardır. Eğer bir cron betiği kurmanıza izin vereceklerse hostunuza sorun: – Phil

+1

İki ziyarete dayanarak teorik olarak bazı webhost'ların zor zaman sınırını atlatabilirsiniz. Temel olarak, yaklaşımımı kullanın, sonra uzun betiğinizin ikinci bölümünü çalıştırarak kullanıcıya bir * saniye * zamanı yönlendirin. Yürütme süresini yarıya bölme ve kullanıcıyı iki kez yeniden yönlendirme. Evet, zayıf kullanıcı. Haha. –

cevap

14

Gerçekten cron erişiminizmiş gibi davranmak için çevrimiçi bir cron hizmeti kullanabilirsiniz.

Eğer

Free Cron Online Website

infaz o dosyayı her x dakikada yürütmek için ücretsiz çevrimiçi cron'u kurma edilmesini istediğiniz içeriği ile php dosyası oluşturun.

+1

Vay, bu harika bir site. Bu kesinlikle beni başlatacak! – CookieMonster

+1

Evet, harika site, işaretli. Bizi anlattığınız için teşekkürler :) –

0

Neden burada bir göz atın

crontab 

kullanmayın:

zaman ilk önce bu doğru bir yaklaşımdır, ama sadece bir komut dosyası tetiklemek için kullanılan eğer
http://en.wikipedia.org/wiki/Cron 
+2

OP, özellikle sunucu dışında FTP dışında başka erişim olmadığını söyledi. –

+1

Ayrıca, bu 'crontab'. –

+0

Ve bir barındırma yalnızca FTP erişimi sağlıyorsa. Bir komut dosyasının 60 saniyeden fazla çalıştırılmasına izin verecekler mi? – glarkou

4

emin değil Kullanıcı siteyi ziyaret eder ve daha sonra tarayıcısını sayfayı yenilemesi için kullanıcıya bir <meta http-equiv="refresh"... gönderir. Orijinal PHP betiği hala sunucuda çalışır, ancak kullanıcı artık görmeyecektir.

Temelde, böyle bir şey:

if(check if the user is the first visitor today) { 
    set_time_limit(0); 
    echo "<meta http-equiv='refresh' content='1;url=..." />"; // put your site baseurl in here 

    ... run your scripts here 
} 

Sadece bir fikir. İşe yaramıyor. Sadece dene.

+0

Hey, bu iyi bir fikir gibi geliyor. Kullanıcının Header ("Yer: ..") kullanarak yönlendirilmesini varsayalım; iyi çalışır (kullanıcıyı yönlendirmiş olsa da betiği devam ettirir)? ASAP bu yöntemi deneyeceğim. – CookieMonster

+1

Evet, bir başlık kullanmak da iyi olur. Aslında, önce üstbilgiyi ve ardından meta etiketi (bundan sonra veya bir hata alırsınız) gönderin, böylece kullanıcının yönlendirildiğinden emin olun. Bazı tarayıcılar herhangi bir nedenden dolayı başlığı (Konum) göz ardı edebilir, dolayısıyla meta etiketi yönlendirmeyi sağlayacaktır. Sadece benim bir alışkanlığım. Umarım bu senin için çalışır! :) –

+0

Tamam, harika şeyler! Her iki yöntemi de deneyeceğim ve hangisinin benim için en uygun olduğunu göreceğim :) Teşekkürler – CookieMonster

0

Barındırma sağlayıcınız size FTP erişimi, ve'dan başka bir şey vermezse, başka bir makineden periyodik bir istek almak istemezsiniz, sonra yapabileceğiniz hiçbir şey yoktur. Daha iyi bir barındırma hesabı, tercihen cron kullanmanıza izin veren bir tane almak zorundasınız.

+1

Bunu yapmak için bir müşteri/ziyaretçiye güvenin, ardından istemciyi kaydırın. Yukarıdaki yöntemime bakın. :) –

İlgili konular