Autor Zpráva
cron
Profil *
Ahoj, chystám se přidat do své již vytvořené aplikace (redakčního systému) automatické aktualizování informací v noci pomocí Cronu.

1) Bude tato aktualizace uživatelům fungovat (stáhnou-li si jí a nahrají na svůj server)? Tzn. podporují Cron všechny hostingy?
2) Pokud ano, nebudou muset v administraci něco nastavovat? Nemám s Cronem zatím žádné zkušenosti, takže nevím co to pro ně bude obnášet... Prostě jestli to zvládne běžný uživatel.

Díky moc
Keeehi
Profil
cron:
1) - Cron není podporován všemi hostingy
2) - Ano, bude si to muset v administraci nastavit.
cron
Profil *
Keeehi:
Díky :) Takže je lepší se mu v tomto případě (RS) vyhnout? Pokud si uživatel nahraje systém na hosting bez Cronu, tak by teda asi nefungoval...
Keeehi
Profil
cron:
No udělat by to šlo. Podmínkou by bylo, aby při stahování RS zadal i url, kde bude potom i umístěn. Tuto url by jsi mohl volat cronem ty a tím ten aktualizační script "zaktivovat".

Takovouto možnost bych ale asi nedělal, nechal bych, aby si to aktualizovali sami (mě osobně vadí, když mě nějaký program do aktualizace nutí, nebo ji dokonce udělá sám za mými zády. Ten update script napsat můžeš, ale jeho spouštění bych nechal na uživateli.)
cron
Profil *
Keeehi:
"No udělat by to šlo. Podmínkou by bylo, aby při stahování RS zadal i url, kde bude potom i umístěn. Tuto url by jsi mohl volat cronem ty a tím ten aktualizační script "zaktivovat"."
Tomu moc nerozumim, mohl bys to vysvětlit trochu jednodušeji?

Já jsem si myslel, že pokud webhosting, na který uživatel RS nahraje, nebude podporovat CRON, tak už je to prostě problém a nedá se s ním nic dělat...
Keeehi
Profil
cron:
1) vytvoříš script aktualizace.php, který pokaždé když bude zavolán, stáhne aktualizace
2) tento script se dá spustit cronem, ale dá se taky spustit takto: http://adresa-uzivatele.cz/scripty/aktualizace.php
3) pokud ti tedy ten kdo si bude RS stahovat napíše i adresu na které potom bude (adresa-uzivatele.cz) můžeš potom vytvořit u sebe na servru script aktivuj.php, který jenom prostě pomocí některé funkce (např. file_get_content, měla by snad stačit i get_headers) zaktivuje aktualizační scripty u těch uživatelů.

aktivuj.php

4) Script aktivuj.php budeš spouštět svým cronem.


Ty adresy samozřejmě budeš nejspíš načítat z databáze, ale pro názornost jsem to udělal takto.
Znovu připomínám, že bych to osobně nedoporučoval.
cron
Profil *
Už jsem to pochopil, ale dalo to práci.. :)
Můžeš uvést alespoň 2 hostingy, které nepodporují Cron? Zatím jsem na takový nenarazil...
panther
Profil
cron:
Můžeš uvést alespoň 2 hostingy, které nepodporují Cron?
C4, active24, Forpsi, Český Hosting, Ignum, ...

Spíše by se daly vypsat ty, které nepodporují. Někde může být Cron za příplatek.
cron
Profil *
panther:
Díky moc
cron
Profil *
panther:
C4 ho podporuje ne? # PHP, CRON, mod_rewrite (optimalizace URL pro SEO), .htaccess
viz http://www.webhosting-c4.cz/
panther
Profil
cron:
C4 ho podporuje ne?
ano, podporují ho všichni, které jsem vypsal v [#8] (někde za příplatek). Z těch větších hostingů je podpora cronu relativně velká, u menších to může být slabší.

Špatně jsem si přečetl [#7], myslel jsem, že hledáš tyhle :-)
cron
Profil *
panther:
Zrovna Forpsi ale Cron nepodporuje, pouze nabízí nějakou jinou službu http://kb.forpsi.com/article.php?id=172
Petr_
Profil *
Tohle se dá jednoduše obejít i bez CRONu. Pokud bude na daném webu alespoň minimální návštěvnost (a k tomu můžou posloužit i BOTi), tak lze udělat podmínku (ještě před tím, než se začne načítat obsah kterékoliv stránky), že první "návštěvník/BOT" pro daný daný den prostě zároveň před načtením stránky spustí ten soubor aktualizačních příkazů a sám už pak tím pádem dostane aktualizovanou verzi. Třeba v databázi si pak zároveň uložíš, že už aktualizace pro daný den byla provedena, aby se s dalšími návštěvníky už zbytečně neprováděla. A tak pořád dokola.
Pokud to, co tím CRONem chceš provádět, netrvá moc dlouho, tak ten mnou popsaný v praxi udělá naprosto to samé a rozdíl naprosto nikdo nepozná.


Obecný princip:

Stačí tabulka "aktualizace" s jedním sloupcem "datum". V případě provedení aktualizace se do ní vloží aktuální datum.


SELECT datum FROM aktualizace WHERE datum = CURDATE();

a) Pokud dotaz vrátí prázdný výsledek, znamená to, že aktualizace ještě nebyla provedena, spustí se daný aktualizační skript a do tabulky se zapíše aktuální datum.
b) Pokud dotaz vrátí neprázdný nenulový počet řádků, znamená to, že aktualizace už provedena byla a není třeba nic dále provádět.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: