Cron na strojích, kde nemáte wget ani poormanscron
Vložil/a dobo, 9 Červenec, 2009 - 20:50
Píšem tu malú noticku, ktorá snáď bude nápomocná, ak sa niekto ocitne v podobnom probléme. Zároveň ma zaujíma, či existujú i iné riešenia.
Náčrt:
- spúšťanie CRONu v drupalovskej inštalácii na hostingu, kde máte prístup len cez FTP a CRON je poskytovaný formou adresárov (CRONden, CRONhodina etc.), kde uploadnete skripty
- php binárka (PHP je na Apache ako FastCGI) raz začas prekukne tieto CRONovské adresáre, spustí všetky skripty a vymalováno
Problém:
- nezavoláte skript pomocou wgetu ani nijakej inej aplikačky – tieto adresáre sú len pre php skripty (častý bezpečnostný neduh, ja osobne viem, že to má takto organizovaný Český Hosting a Webhosting C4)
- logicky teda umiestnite do CRONu súbor cron.php, upravíte cestu k includovaným súborom a pokojne zaspávate. Ouha, nefunguje. Problém je asi v systémových cestách, v includovanom skripte includes/bootstrap.inc je toho požehnane, a keď som ho editoval, tak som si rozhasil celý drupal (toto je len moja voľná úvaha, opravte ma, ak sa mýlim)
- nechcel som poormanscron. Neznášam zbytočné navrstvovanie modulov.
My way:
1. Začal som pátrati po možnosti uploadu php súboru, ktorý by volal cron.php v roote inštalácie drupalu (spúšťal ho!). Naveľa som narazil na funkciu file_get_contents()
tu link na syntax na php.net
tu link na popis funkcie od Kuby Vrány
2. samotný skript je triviálny:
<?php
$vosolho = file_get_contents('http://vasadomena.cz/cron.php');
echo $vosolho;
?>
3. nezabudnite si nastaviť file permiss. tohto súboru na execute

C4
na hostingu C4 provozuju nekolik webu, a cron jsem vzdy resil jednoduse tim ze jsem napsal na podporu ktery soubor volat, kdy ho volat a je to.
ja to obycajne riesim tak, ze
ja to obycajne riesim tak, ze cron na vsetkych strankach, kde mam drupal, spustam z lubovolneho ssh uctu (teda linuxu), ktory mam k dispozicii. teda nie z lubovolneho, ale v podstate len z jedneho. mam teda v cron-e niekolko takychto riadkov (v zavislosti od poctu instalovanych drupal webov):
0 0 * * * wget -q -O /dev/null „http://adresa.drupal.webu/cron.php“
vyhoda? spusta sa to naozaj pravidelne cron-om, nemusim riesit instalaciu dodatocnych modulov alebo inych „pseudo cron“ rieseni.
pochopiteľne
lenže ja nemám na hostingu prístup k wget-u. Mám to vždy „odpáliť“ zo svojho desktopu? to by šlo, ale čo v prípade, že idem na 2 týždne dovolenky atd. Chcem riešenie, ktoré by vobec nepočítalo s prácou inej mašiny, než tá, na ktorej je webserver s Drupalom.
díky za jednoduché a funkční
díky za jednoduché a funkční řešení pro neprogramátory! :)
To jsem musel dělat např. na
Bacha, ty uvozovky mají být oboje horní jednoduché.
Poslat nový komentář