abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 16:55 | Nová verze

Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 108 (pdf), HackSpace 45 (pdf) a Wireframe 52 (pdf).

Ladislav Hagara | Komentářů: 0
včera 16:44 | Zajímavý projekt

Jeff Geerling, který se věnuje mj. testování kompatibility různých komponent s Raspberry Pi, oznamuje, že se mu podařilo dosáhnout povolení SATA ve výchozí konfiguraci jádra Raspberry Pi OS, oficiální distribuce pro Raspberry Pi. Zavádění systému ale zatím není připraveno na start ze SATA úložiště.

Fluttershy, yay! | Komentářů: 0
včera 16:33 | Zajímavý projekt

Emmanuele Bassi oznámil spuštění nového webu s dokumentací pro vývojáře aplikací pro desktopové prostředí GNOME. Web je generován pomocí nástroje Sphinx. Starý web je stále dostupný.

Fluttershy, yay! | Komentářů: 0
včera 02:11 | Pozvánky

Týden po online konferenci LibreOffice, ve dnech 30.9.-1.10., proběhne dvoudenní konference COOL days 2021 firmy Collabora, zaměřená na Collabora Online. Collabora Online je výkonná online kancelář založená na LibreOffice, která podporuje všechny hlavní formáty dokumentů, tabulek a prezentací a kterou můžete integrovat do vlastní infrastruktury.

… více »
Zdeněk Crhonek | Komentářů: 0
30.7. 18:11 | IT novinky

Hra, resp. interaktivní vyprávění Wanderlust: Transsiberian je na portále GOG.com zdarma, akce trvá do 3. srpna.

Fluttershy, yay! | Komentářů: 0
30.7. 18:00 | Nová verze

Dokumentační tým LibreOffice vydává příručku LibreOffice Draw 7.1. LibreOffice Draw umožňuje vytvořit cokoli od rychlého náčrtu až po složitou kresbu a poskytuje prostředky pro komunikaci pomocí grafiky a diagramů. S maximální velikostí stránky 300 × 300 cm je Draw vynikajícím balíkem pro tvorbu technických výkresů, brožur, plakátů a mnoha dalších dokumentů. Draw manipuluje s grafickými objekty, seskupuje je, ořezává, používá

… více »
Zdeněk Crhonek | Komentářů: 0
30.7. 12:00 | Komunita

Je poslední pátek v červenci, a proto všem systémovým administrátorům vše nejlepší k dnešnímu Dni systémových administrátorů (System Administrator Appreciation Day).

Ladislav Hagara | Komentářů: 12
30.7. 09:00 | Komunita

Projekty GCC a glibc již nevyžadují po přispěvatelích převedení autorských práv (copyright assignment) na FSF (Nadace pro svobodný software). Projekt GCC to oznámil 1. června. Projekt glibc 28. července.

Ladislav Hagara | Komentářů: 8
30.7. 08:00 | Komunita

FSF (Nadace pro svobodný software) vyzývá k napsání studií věnovaných filozofickým a právním otázkám kolem GitHub Copilota. Vybrané studie budou publikovány na stránkách FSF a odměněny částkou 500 dolarů.

Ladislav Hagara | Komentářů: 0
30.7. 07:00 | Zajímavý software

Společnost OpenAI na svém blogu představila open source programovací jazyk a překladač Triton (GitHub). Jazyk je určený pro paralelní programování na GPU.

Ladislav Hagara | Komentářů: 0
Preferuji
 (63%)
 (27%)
 (10%)
Celkem 396 hlasů
 Komentářů: 70, poslední 28.7. 15:20
Rozcestník



Dotaz: PHP - Jak zastavit skript ESCapem

18.11.2020 21:33 tom
PHP - Jak zastavit skript ESCapem
Přečteno: 537×
Zdravim,

jeste jeden stupidni dotaz na problem, se kterym se dost casto potykam

Obcas se mi stane, ze necham PHP skript ve smycce neco sloziteho pocitat, nebo se dotazovat nejake zadrene databaze. A prohlizec ceka a ceka, a v Zabbixu zacne naskakovat "Disk i/o is overloaded"...

Tak me napadlo, jak by to bylo hezke, kdybych mohl klepnout do klavesy ESC, a cele to zastavit. Tedy zejmena na serveru

Co jsem tak googlil, tak vetsina lidi navrhuje, dat do te smycky podminku, ze kdyz se nekde (typicky v tempu) objevi nejaky soubor, nebo prikaz v nejakem souboru (run/stop), tak ze se z te smycky vyskoci

Jako umim pres jQuery zachytit klavesu ESC a navazat ji na nejaky AJAX, ktery by neco takoveho na serveru obstaral. Ale nechce se mi verit, ze jako na to neni nic lepsiho. Podle mnozstvi diskusi, ktere mi to naslo, asi nejsem sam, kdo tenhle problem musi obcas resit

Napadaji me silenosti jako vytvorit dynamicky skript v tempu, spustit ho pres system(), zachytit jeho PID, a pak ten proces pres AJAX zabit KILLem

Nebo v PHP udelat nejak fork() a resit to v nem. Nejcastejsi rada, jak v PHP udelat fork() a pracovat s potomkem zni: "don't do it!". Uz si nepamatuju ty argumenty, ale pamatuju si, ze mne presvedcily...

Nevim treba jestli kdyz PHP budu spoustet jako CGI, namisto Apache modulu, jestli mi to v tomhle smeru nabidne nejake lepsi moznosti

Mate nekdo tohle vyresene?

Diky

Řešení dotazu:


Odpovědi

18.11.2020 21:39 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Máme to vyřešeno - spoléháme na timeout, který se o to postará sám.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
18.11.2020 22:14 tom
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
No jo, to je fakt. Ja si vlastne muzu pred tou smyckou nadefinovat, jaky cas jsem ochotnej tomu skriptu poskytnout

Nicmene, co kdyz predem netusim, kolik casu by to mohlo stat, a chci se rozhodovat tak nejak za behu, az treba podle nasledku?

Jde to nejak rozumne zastavit z te klientske strany?
Řešení 1× (OldFrog {Ondra Nemecek})
AraxoN avatar 19.11.2020 13:07 AraxoN | skóre: 45 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Manuál pod heslom ignore_user_abort obsahuje nejaké hinty, ktoré by mohli pomôcť. Napríklad, že server sa dozvie, že sa klient odpojil (stlačil Escape), až keď sa pokúsi niečo klientovi poslať. Takže v tej slučke treba sem-tam niečo vypísať a flushnúť:
<?php

ignore_user_abort(false);

while (true) {
  // chvíľu niečo počítaj
  echo ".";
  flush();
}
19.11.2020 18:07 tom
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
To vypada zajimave, kouknu. Diky
19.11.2020 18:27 tom
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Ty jo, ono to asi fakt funguje!

Kdyz necham ten skript neco vypisovat a pak zmacknu ESC, tak on fakt skonci. Zadny AJAX, ani jine kejkle nejsou zapotrebi

Ja se z toho... Diky!
27.1. 20:26 tom
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Dneska jsem tohle opet pouzil a zjistil, ze predchozi odpoved neni kompletni

Pokud ma tohle nekomu poslouzit, mel by vedet, ze nestaci zavolat flush(), ale pred nim jeste ob_flush(). Tedy pokud ma vystup putovat pres Apache do weboveho prohlizece

Neptejte se me proc

Priklad:
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);

$ip = '8.8.8.8';
$cmd = "/bin/ping -c10 -W2 -n $ip 2>&1";

$descriptorspec = array(
   0 => array("pipe", "r"),
   1 => array("pipe", "w"),
   2 => array("pipe", "w"),
);

ob_flush();
flush();

$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());

if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        ob_flush();
        flush();
    }
}
Gréta avatar 27.1. 21:10 Gréta | skóre: 32 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem

Neptejte se me proc

asi proto hele :O :O

flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser. It also doesn't affect PHP's userspace output buffering mechanism. This means you will have to call both ob_flush() and flush() to flush the ob output buffers if you are using those.

v každým afroamerickým otvoru kterej se zhroutí mužou bejt skovaný semínka uplně novýho vesmíru hele 🕳 🕳
27.1. 22:06 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Ono je lepší se OB vyhnout velkým obloukem. V tom případě je ob_flush() samozřejmě zbytečné.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
28.1. 07:40 okbobcz | skóre: 3
Rozbalit Rozbalit vše Re: PHP - Jak zastavit skript ESCapem
Nejsem si úplně jistý, jestli tento způsob bez něčeho dalšího zastaví běžící dotaz v databázi - zvlášť pokud by se zrovna počítala třeba delší agregace a zrovna databáze nemá žádné výsledky, které by posílala klientovi.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.