Autor | Zpráva | ||
---|---|---|---|
SeparateSK Profil |
Dobrý deň robím jeden script,ktorý bude mať nejaký účel - byť aktívny non-stop,ale neviem ako ho mám zastaviť.
<?php $p=0; for(;;){ $f=fopen("data.txt","w"); fputs($f,$p); fclose($f); $p+=1; usleep(150000); } ?> Ale i keď som zatvoril prehliadač,script stále nejakú dobu ide, ako ho mám zastaviť - konkrétne do 197,bez toho aby som vypol server? |
||
Mároš Profil |
<?php $p=0; for(;;){ $f=fopen("data.txt","w"); fputs($f,$p); fclose($f); $p+=1; usleep(150000); if( $p == nejakeMaximalniCislo ) { die(); //nebo exit(); } } ?> |
||
Majkl578 Profil |
SeparateSK:
„ale neviem ako ho mám zastaviť“ Záleží, na základě čeho se má zastavit. Ten cyklus v [#1] nedává smysl, proč do toho souboru pořád zapisuje a přepisuje jeho obsah? Proč jen nezapsat tu poslední hodnotu? A proč vůbec nekonečný cyklus? for ($p = 0; $p < 500; $p++) { // 500 je ochranná bariéra, v tomhle případě 500 iterací file_put_contents('data.txt', $p); usleep(150000); } |
||
Joker Profil |
#4 · Zasláno: 30. 3. 2012, 09:41:10
SeparateSK:
„Ako zastaviť tento script?“ Nedávat tam nekonečný cyklus. |
||
SeparateSK Profil |
Mároš:
Keď použijem die(); ukončí sa script nadobro alebo ešte nejakú dobu pôjde, len nebude nič robiť z toho loopu? Lebo ja túto funkciu až tak často(skoro nikdy) nepoužívam. |
||
Bertram Profil |
#6 · Zasláno: 30. 3. 2012, 16:31:48
SeparateSK:
„ukončí sa script nadobro alebo ešte nejakú dobu pôjde“ Buď ukončí skript, nebo pokud tomuto jazykovému konstruktu předáš nějaký string, tak ho vytiskne a ukončí skript. |
||
Chro Profil |
#7 · Zasláno: 30. 3. 2012, 21:59:10
SeparateSK:
Provozuji něco podobného a zastavení skriptu řeším i tím, že v cyklu při každé iteraci před funkcí sleep() načítám konfiguraci pomocí funkce parse_ini_file() z INI souboru: run = on (nebo off) |
||
SeparateSK Profil |
Toto je asi najvhodnejšie riešenie ,teraz to vypadá nejak takto:
<?php $p=0; $run=true; for(;;){ $f=fopen("data.txt","w"); fputs($f,$p); fclose($f); $p+=1; $r=parse_ini_file("status.ini",true); if($rData[run]=="off")$run=false; if(!$run){ break; } usleep(150000); } exit(1); ?> Ďakujem za skvelý nápad. |
||
Alphard Profil |
#9 · Zasláno: 31. 3. 2012, 10:48:43
[#8] SeparateSK
To je docela běžné řešení, jen byste musel srozumitelně popsat, co chcete. Pak by někdo třeba ukázal rozumný script, který dělá to stejné. Máte tam for(;;) a přitom pak manuálně inkrementujete $p a vyskočení z cyklu je zcela zbytečně v cyklu (a proč tam jsou dvě podmínky taky nevím). $r a $rData je asi jen překlep, ale konstanta run zřejmě neexistuje. Celkově je to dost bastl.
|
||
SeparateSK Profil |
#10 · Zasláno: 31. 3. 2012, 11:28:28
pravda, $rData je preklep, má to byť $r
|
||
Časová prodleva: 12 let
|
0