[PHP] Pravidelné vykonávání scriptu na serveru

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod PiranhaGreg 30. 5. 2012 08:05

Potřeboval bych, aby se mi na serveru každých (třeba) 5 minut vykonal jeden php script. S PHP moc neumím, takže nevím, jestli to jde zařídit přímo v něm...

Napadlo mě ještě, jestli na to není nějaká služba, která by na server posílala požadavky na načtení něčeho a tím ten script spouštěla. Nebo jestli to třeba nejde nějak nastavit v .htacces.

Nevěděl by někdo? O:-)
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Y2Kane 30. 5. 2012 08:16

Na serverech se tohle nejčastěji řeší pomocí služby CRON, která spouští scripty v určitých časových intervalech.
Y2Kane
Kolemjdoucí

Odeslat příspěvekod vasam 30. 5. 2012 08:17

To se řeší přes tzv. CRON, nicméně je nutné, aby byl podporován ze strany serveru/webhostingu. Nastavuje se to zpravidla v administraci hostingu.
vasam
Junior
Uživatelský avatar

Odeslat příspěvekod PiranhaGreg 30. 5. 2012 08:34

A když to webhosting nepodporuje? Založit si jinej, kde ta podpora je a pak z něho spouštět scripty na tom primárním? :hm
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod K8 30. 5. 2012 08:47

a je nutné ten skript spouštět přesně po 5-ti minutách? nestačí ho spouště jen "občas" - tedy když se načítá stránka a zjistít se, že už uplynulo víc než 5 minut od posledního spuštění, tak se nejdříve spustí tento skript a pak se provede generování stránky (pokud je ta stránka závislá na výsledcích z toho skriptu, aby měla aktuální data z toho skriptu)

jinak samozřejmě je možné odesílat http požadavky odkudkoliv, které povedou na spuštění tohoto skriptu, takže třeba skriptem v cronu z jiného webhostingu
Naposledy upravil K8 dne 30. 5. 2012 09:36, celkově upraveno 1
K8
Pokročilý

Odeslat příspěvekod PiranhaGreg 30. 5. 2012 08:52

To mě samozřejmě napadlo, ale neočekávám, že budu mít přes noc nějakou velkou návštěvnost. Nemusí to být pravidelné intervaly, ale aspoň tak jednou do hodiny bych tu aktualizaci potřeboval...
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Vebloud 30. 5. 2012 09:15

Jen tak pro zajímavost, co potřebuješ aktualizovat takhle často? Ptám se, protože až příliš často jsem podobnými přepočty viděl "řešení" chybného návrhu db nebo aplikace.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
Ex-moderátor
Uživatelský avatar

Odeslat příspěvekod gandor 30. 5. 2012 09:23

Ono rieseni je vela. Cron je standardne riesenie, ale je linux only. Existuje ale alternativa pre windows, ktora je pre zmenu windows only (windows scheduler).
Oboje ti ale musi hosting povolit.
Dalsie riesenia uz su skvor obchadzky - najskvor tie spomenute:
a, bud teda requesty z ineho webserveru
b, pustat zo skriptu pri navsteve ak prejde urcity casovy interval
Potom este tie nespomenute:
a, pokial mas stastie v nastaveniach hostingu, tak mas povoleny exec a vies spustat skript (to prve vecsinou nieje pravda), ktory bude fungovat do nekonecna (osobne by som to radsej nastavil na nejaky dlhsi cas - povedzme den a ked sa bude skript blizit k tomuto casovemu limitu (napr. 20 hodin), nech sa radsej spusti znova a vypne sa - ak by sa totiz zacyklil, tak mas problem na webhostingu zabit dany skript - len poznamka ono aj same zabijanie takeho procesu je system specific) - len poznamka - pokial mas s nejakeho dovodu plnu kontrolu nad vlastnymi skriptami a vies ich aj zabijat - da sa vytvorit obsluzna utilitka, ktora vytvara a zabija dane procesy. Ale priprav sa na minimalne pol dna kodenia (skvor studovania dokumentacie) - lebo budes pouzivat rozne OS specific prikazy, ktore pravdepodobne bezne nepouzivas (presne takuto utilitku som pisal - takze pisem z vlastnej skusenosti)
b, urcita obmena k vykonavaniu skriptu od usera - niekedy je lepsie vytvorit novy obsluzny request ako nechat udrzbu na ten isty request v ktorom user caka na vykonanie (obsluha moze trvat aj hodinu - to ziaden uzivatel a ani webserver tak dlho cakat nebudu). Dolezite je ale vytvorit neblokujuci request - necitat ziadne data. Takze ak sa k tomu pouzije exec na linuxoch, tak vysledok presmerovat do dev/null na windowsoch je ten prikaz o nieco komplikovanejsi ale tiez je... Ak exec nieje povoleny, tak (teraz som si neni 100% isty, ci aj ten nieje blokujuci, treba pozriet dokumentaciu - pripadne nejake socket open a tak - ak je to povolene) pouzit fopen/fclose a nie file_get_contents...

PS. exec riesenia funguju na principe, ze pustas skript priamo cez php.exe kde das prvy parameter cestu k skriptu. Pozor ale, ze dany skript sa potom ale sprava trocha inak. Nemas dobre nastavene premenne ako $_SERVER['DOCUMENT_ROOT'] (ci ako sa to pise), relativne cesty zacinaju z ineho umiestnena a podobne. Proste spravanie je velmi podobne, ale nie identicke.
Naposledy upravil gandor dne 30. 5. 2012 09:29, celkově upraveno 1
gandor
Mírně pokročilý

Odeslat příspěvekod K8 30. 5. 2012 09:29

PiranhaGreg píše:To mě samozřejmě napadlo, ale neočekávám, že budu mít přes noc nějakou velkou návštěvnost. Nemusí to být pravidelné intervaly, ale aspoň tak jednou do hodiny bych tu aktualizaci potřeboval...

a víš jak často tě navštěvují různí indexovací roboti a hackeři, který se snaží zjistit nějakou díru ve tvém webu?
K8
Pokročilý

Odeslat příspěvekod mikulcik 24. 8. 2012 10:48

PiranhaGreg píše:A když to webhosting nepodporuje? Založit si jinej, kde ta podpora je a pak z něho spouštět scripty na tom primárním? :hm



hledej na google online cron
mikulcik
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků