2011-01-11 25 views
8

Prace Cron są zamknięte na moim serwerze i administrator serwera nie akceptuje ich otworzyć. Ponieważ zadania cron spowalniają serwer itp. Potrzebuję więc alternatywy.Czy są jakieś alternatywne prace Cron?

Muszę uruchamiać plik php (cron.php) co 2 minuty.

Jak mogę to zrobić?

+1

jest 'cron.php' podawane ze zwoju serwer lub i czy to tylko lokalny skrypt? –

+4

Krótka odpowiedź brzmi, aby uzyskać lepszego hosta ... – ircmaxell

+0

@Jesse, jest obsługiwana z serwera WWW i dostępna za pomocą przeglądarki – Eray

Odpowiedz

2

W zależności od dostępu do skrzynki.

Sam PHP nie będzie działać tak dobrze. Mógłbyś zrobić skrypt, który próbuje stale zwiększać czas realizacji, spać i regularnie sprawdzać nowe zlecenia. Jest to jednak nieoptymalne, ponieważ będziesz musiał uzyskać do niego dostęp przez przeglądarkę raz, a skrypt będzie musiał upewnić się, że uruchomi się tylko raz.

Przy dostępie do powłoki można uruchomić skrypt php na powłoce, co uniemożliwiłoby jej wywoływanie ze strony publicznej i konieczność jej uruchomienia przez przeglądarkę internetową.

Przy dostępie do powłoki można również uruchomić program, który zapewnia usługę (cron). Czy to Java, Python lub inny program.

Zadania Cron nie powinny spowalniać serwera zawsze. To zależy od wykonywanej pracy. Jeśli twoje zadania są tak drogie, administrator prawdopodobnie nie będzie w porządku z pracą z zamkniętymi zadaniami crona i tak czy inaczej zwolni serwer i może podjąć dalsze działania, aby uniemożliwić ci pracę.

1

Podpowiedz się za (bezpłatną) usługę monitorowania stron internetowych i zaplanuj swój [url] /cron.php. Możesz poprosić stronę ze stroną internetową, aby zwróciła coś znaczącego i skonfigurować usługę monitorowania, aby powiadamiała Cię o tej odpowiedzi.

-2

Jeśli miałeś dużo odwiedzających, po prostu pisz do ostatniej wizyty w bazie danych, a jeśli czas zagnieżdżenia jest bardziej potrzebny - uruchom crona. Ale tak naprawdę - znajdź nowy hosting.

7

Mimo że pytanie zostało wysłane już jakiś czas temu, po prostu miałem ten sam problem, ale znalazłem rozwiązanie (w oparciu o Kissaki's answer, dzięki!), I myślałem, że będę pisać to tutaj dla każdego, kto wciąż szuka możliwego rozwiązania.

Wymagania:

  • dostęp SSH
  • Python

Code (python):

from subprocess import call 
import time 
while True: 
    call(["php","cron.php"]) 
    time.sleep(120) 
+0

To jest całkiem schludne! Dzięki za udostępnienie! – Yavor

+0

Muszę więc raz wywołać skrypt Pythona przez ssh? –

+0

Prawidłowo. Jeśli masz wsparcie dla "ekranu", możesz to zrobić również w tle. – DaJF

Powiązane problemy