Autor | Zpráva | ||
---|---|---|---|
jtfcobra Profil |
#1 · Zasláno: 17. 3. 2015, 14:51:24
Spouštění PHP scriptu postupně časově poradíte
chtěl bych mít soubor automat.php a ten bude spoštět cron1.php počká 60 sekund az se vykona dale cron2.php počká 60 sekund nez se vykona atd...? |
||
Keeehi Profil |
#2 · Zasláno: 17. 3. 2015, 15:00:40
jtfcobra:
Cron se dá nastavit, aby spouštěl scripty v minutových intervalech. Možná chceš ale něco jiného, tak to zkus lépe popsat. |
||
jtfcobra Profil |
#3 · Zasláno: 17. 3. 2015, 15:11:24
No ja mam 5 minutové...
chtěl bych mít jeden PHP co mi spustit postupně všechny crony a těch mám asi 10 |
||
Keeehi Profil |
Takže předpokládám, že jde o nějaký hosting takže nemáte ani možnost posílat příkazy opračnímu systému.
verze 1 (synchronní) $scripts = array('cron1.php', 'cron2.php', 'cron3.php', 'cron4.php'); foreach($scripts as $script) { include($script); sleep(60); } verze 2 (asynchronní) $scripts = array('cron1.php', 'cron2.php', 'cron3.php', 'cron4.php'); foreach($scripts as $script) { file_get_contents("http://example.com/$script"); sleep(60); } Mají různé výhody a nevýhody. 1 - když nastane problém v jednom scriptu, následující scripty se nemusejí vykonat; čas běhu dílčích scriptů se sčítá 2 - soubory musejí být přístupné z internetu, dají se zavést ochrany proti nechtěnému spuštěí ale nemusejí být stoprocentní, ale teba to nevadí; Je potřeba už na začátku každého spouštěného scriptu ukončit jeho výstup, aby na něj hlavní script nemusel čekat. - v takto jednoduché verzi se neměří doba běhu jednotlivých scriptů,takže to nemusí být spouštěné každou minutu, ale každou minutu + něco málo navíc. Hlavně u verze 1. |
||
Juraj Hajdúch Profil |
Jak psal Keeehi v bodu 1 by to jistě šlo, ale je potřeba nezapomínat na hodnotu max_execution_time v php.ini, defaultne je to myslím jenom 30 vteřin. A nevím, jestli vám hosting dovolí si tuto direktívu nastavit na potřebnou dobu.
Za zvážení stojí navštívit napr. stránky: EasyCron a nebo SetCronJobs a nebo dát do Google fráze 'online cron service' a ono to najde spoustu služeb, free i placené. |
||
jtfcobra Profil |
#6 · Zasláno: 17. 3. 2015, 16:23:00 · Upravil/a: jtfcobra
90 sekund mam v PHP :)
Napsal jsem to takto ale neni videt prubeh ? <?php $scripts = array('00204AF33B77', '00204AF39358', '0080A39D4788', '0080A39D5F25','0080A39D4784','0080A39D4782','00204AE24ED7','0080A39CB88D'); foreach($scripts as $script) { echo 'Mac adresa: '.$scripts.'</br>'; file_get_contents("cron2015.php?mac=$script"); sleep(20); } ?> |
||
Chro. Profil |
#7 · Zasláno: 17. 3. 2015, 16:39:55
Průběh se ukáže až po ukončení běhu skriptu. Jinak doba uspání procesu zpracování skriptu funkcemi sleep a usleep se do max_execution_time nezapočítává.
|
||
jtfcobra Profil |
#8 · Zasláno: 17. 3. 2015, 16:49:58
Jeste jsem to vylepsil:
<?php $start=microtime(true); $scripts = array('00204AF33B77', '00204AF39358', '0080A39D4788', '0080A39D5F25','0080A39D4784','0080A39D4782','00204AE24ED7','0080A39CB88D'); foreach($scripts as $script) { echo 'Mac adresa: '.$scripts.'</br>'; file_get_contents("cron2015.php?mac=$script"); sleep(10); } ?> <?php echo '</br>'; echo 'Vyuzita pamet: ' .round((memory_get_usage()/1024/1024),4) . 'MB ' . '(Realne: ' . memory_get_usage(true)/1024/1024 . 'MB, Maximalne: ' . round(memory_get_peak_usage()/1024/1024,4) .'MB) za ' . round(microtime(true)-$start,5) . ' sekund'; ?> |
||
Juraj Hajdúch Profil |
#9 · Zasláno: 17. 3. 2015, 16:50:30
Chro.:
Díky, to o nezapočítávání sleep/usleep do max_execution_time jsem nevěděl, opět jsem o něco moudřejší. |
||
jtfcobra Profil |
#10 · Zasláno: 17. 3. 2015, 16:54:13
Mac adresa: Array
Mac adresa: Array Mac adresa: Array Mac adresa: Array Mac adresa: Array Mac adresa: Array Mac adresa: Array Mac adresa: Array Vyuzita pamet: 0.2455MB (Realne: 0.25MB, Maximalne: 0.2639MB) za 205.29878 sekund |
||
Juraj Hajdúch Profil |
NE (protože vypisuješ celé pole)
echo 'Mac adresa: '.$scripts.'</br>'; ALE (protože chceš vypsat jenom jeden prvek pole) echo 'Mac adresa: '.$script.'</br>'; $scripts není $script , odstraňte to poslední 's'
|
||
Chro. Profil |
#12 · Zasláno: 17. 3. 2015, 17:06:38
Tohle
file_get_contents("cron2015.php?mac=$script"); file_get_contents("http://domena.cz/.../cron2015.php?mac=$script"); |
||
jtfcobra Profil |
#13 · Zasláno: 17. 3. 2015, 18:41:19
Takle to mám file_get_contents("
http://domena.cz/.../cron2015.php?mac=$script "); jen jsem to neuvedl...
dotaz kdyz se to spustit tak to ceka az: 1)dokonci prvni uloha 2) 10 sekund 3)nacte a dokonci druhou ulohu? atd...?? |
||
Keeehi Profil |
#14 · Zasláno: 17. 3. 2015, 18:55:41
file_get_contents čeká na ukončení výpisu dat. Typicky je to konec scriptu. Dá se však zařídit, aby výpis zkončil třeba už na začátku scriptu a ten pak i nadále pokračoval.
|
||
jtfcobra Profil |
#15 · Zasláno: 17. 3. 2015, 20:00:17
Takže tech 10 sekund je zbytečných ?
|
||
Keeehi Profil |
#16 · Zasláno: 17. 3. 2015, 20:29:44
jtfcobra:
To záleží na tom, čeho chcete dosáhnout. To nemohu vědět. |
||
jtfcobra Profil |
#17 · Zasláno: 17. 3. 2015, 20:51:00
No chci dosáhnout toho aby ty scripty dojely ....a ten cas 10 sekund nepotrebuji rozmezi
|
||
Časová prodleva: 10 let
|
0