Zkratka na hlavní stranu: Alt + Shift + horní 2(ě)
Linkedin FB e-mail Google Plus Twitter

Hledat na tomto webu

 
 

PHP – Funkce flush a webový štít AVG
Když nefunguje výpis průběhu činnosti na serveru

 

Vytvořeno
3. 10. 2012

 

Normální postup pro vysypání výstupu

Pokud potřebujete během vykonávání PHP skriptu informovat uživatele o aktuálním průběhu,
tzn. zobrazit aktuálně vytvořenou část html stránky už za běhu PHP skriptu a nečekat na jeho dokončení,
můžete na začátek skriptu napsat "ob_implicit_flush();" pro zapnutí automatického výplachu bufferu,
a pak v každém místě, kde chcete uživateli zobrazit doposud vytvořenou část stránky
(typicky to může být uvnitř for cyklu nebo foreach cyklu, ale klidně i jinde)
použijete flush(); nebo ob_flush();.

Anebo použijete některou jinou variantu na téma funkce flush()…
více o tom naleznete v článku Jakuba Vrány (jiný web, nový panel) nebo v manuálu PHP (jiný web, nový panel).

Problém s AVG – flush nefunguje

Může ale nastat zrada – PHP funkce flush() nefunguje – vypíše se až celá stránka, po dokončení skriptu.
Pokud uživatel používá antivir AVG a v jeho komponentě LinkScanner má zapnutý Webový štít,
může webový štít průběžně posílaný html kód zadržovat ve svém zásobníku,
a prohlížeči poslat až celou html stránku najednou. Což jako autoři kódu v danou chvíli nechceme.

Co s tím?

Zjistil jsem, že na stejném počítači, kde AVG zadržuje průběžně posílaný HTML kód,
mi flush funguje u stránky, kde postupně vypisuji tabulku se stovkami řádků, z nichž každý obsahuje vícero údajů.

Řešení

I zkusil jsem tedy poslat do průběžně doplňované, leč AVGčkem zadržované, stránky větší množství jalového komentáře v HTML kódu.
A ono to pomohlo. Je tedy třeba AVGčku HTML kódem dostatečně naplnit zásobník, aby kód poslalo prohlížeči hned, a nečekalo až na konec stránky.

Konkrétně před flush umístit např. tento kód:

for ($j=1; $j<30; $j++) echo "<!-- balast pro zvětšení zdrojáku kvůli flush a avg-->";

(Pro počítání průběhů cyklu tu používám proměnnou $j,
protože je docela možné, že tento kód bude umístěn v cyklu,
pro jehož řízení už je typický název indexu $i použit.)

Když to nepomůže, nastavte počet cyklů na 300, 3000, 30000, … potřebný počet cyklů záleží na konkrétní situaci.

Řešení je to sice dosti nečisté, ba řekl bych až nouzové,
protože nepěkně zatěžuje přenosovou síť i operační paměť,
ale je jediné, které jsem vymyslel.
A funguje. A když musíš, tak musíš.

Poznámka

Při hledání informací o potížích s funkcí funkce flush a jí blízkých jsem narazil na zmínku,
že přinejmenším určité verze Opery vyžadují, abyste před použitím funkce flush vypsali tag pro odřádkování "<br />".

Skok nahoru na: Navigační menu
(klávesová zkratka Alt + Shift + horní „5”)

Zaujala Vás tato stránka?

  • Přidat do záložek (Ctrl+D)
  • Sdílet odkaz (vysílačka)Skok nahoru na:
  • Vytisknout (Ctrl+P)
  • Citovat podle ČSN ISO 690

    Tuto stránku

    ADÁMEK, Martin. PHP – Funkce flush a webový štít AVG: Když nefunguje výpis průběhu činnosti na serveru. Martin Adámek [online]. Náchod [cit. 2020-06-07]. Dostupné z: https://www.adamek.cz/sw/php/flush-vyplach-vypis-nefunguje-avg

    Celý web

    ADÁMEK, Martin. Martin Adámek [online]. Náchod [cit. 2020-06-07]. Dostupné z: https://www.adamek.cz

 

 
 

Národní kulturní dědictví

Stránky archivovány Národní knihovnou ČR Tyto stránky jsou pravidelně archivovány Národní knihovnou ČR pro svou kulturní, vzdělávací, vědeckou, výzkumnou nebo jinou informační hodnotu za účelem dokumentace autentického vzorku českého webu. Jsou součástí kolekce českých webových stránek, které NK ČR hodlá dlouhodobě uchovávat a zpřístupňovat pro budoucí generace. Jejich záznam je součástí České národní bibliografie a katalogu NK ČR.  

 

 
 

Pro rozptýlení

Pase ovčák ovce na zelené louce. Najednou, co to? Po pěšince přijíždí bavorák a za ním oblaka prachu. Za volantem mladý muž v obleku od Broniho, v botách od Gucciho, vázanka D+G a na očích tmavé brýle Ray Ban.
Stisknutím tlačítka stáhne okénko, vykloní se a povídá: „Hej, ovčáku, když ti řeknu, kolik máš ve svém stádě ovcí, dáš mi jednu?”
Ovčák se pomalu podívá na úspěšného mladého muže a řekne klidně: „Ale jo, proč ne?”
Úspěšný mladý muž zaparkuje svůj bavorák, vytáhne notebook Dell, připojí ho ke svému mobilu od AT&T. Pomocí GPS určí svoji polohu, pak se připojí na satelit NASA, kde zadá svoje souřadnice a vyžádá si pořízení řady fotografií s vysokým rozlišením. Pak pomocí Adobe Photoshop otevře pořízené digitální obrázky a exportuje je do zpracovatelského střediska v Hamburku. Během pár vteřin dostane na svůj Palm Pilot zprávu, že obrázky jsou zpracovány a uloženy v databázi SQL. Propojí databázi s Excelem, kde má stovky složitých vzorců, a uploaduje všechna uložená data. Po několika minutách má zpracovaná data. Vytiskne je na miniaturní barevné tiskárně HP LaserJet jako stopadesátistránkovou zprávu a otočí se k ovčákovi: „Máš přesně 1 586 ovcí.”
„To je pravda. Takže podle naší domluvy si můžete vybrat jednu ovci.” Ovčák pozoruje pobaveně mladého muže, jak se snaží napasovat jedno zvíře do kufru auta, a pak povídá: „Když vám řeknu, jaké je vaše povolání, vrátíte mi, co jste si vzal?”
Mladý muž se na vteřinu zamyslí a odpoví: „Jistě.”
„Jste konzultant”, řekne ovčák.
Mladému muži spadne čelist: „To je pravda. Jak jste to uhodl?”
„Vůbec jsem nemusel hádat,” povídá ovčák. „Přijel jste, aniž by pro vás kdokoliv poslal. Chtěl jste si nechat zaplatit za odpověď, kterou jsem už dávno znal - navíc na otázku, na kterou jsem se ani neptal, a přitom o mé práci víte úplný kulový. A teď mi vraťte mého psa…”

 

Pro zamyšlení

Investice do vědění nesou nejvyšší úrok.
[Benjamin Franklin]