Funkce window.setTimeout v PHP


11-04-2012 00:00 - Zdroj: php.vrana.cz
Jeden můj kamarád dostal při pohovoru (nikoliv do Facebooku) zajímavou otázku: „Naprogramuj JavaScriptovou funkci setTimeout v PHP.“ Jak jsem to slyšel, začala mi hlava šrotovat, vymýšlet řešení a narážet na první komplikace ještě dřív, než jsem vzal do ruky tužku nebo klávesnici. A i když jsem si nejdřív říkal, že je to úloha zaměřená hlavně na technické detaily implementace místo na algoritmizaci (o což by mělo jít víc), tak se v ní algoritmus přeci jen použije. Tím pádem se dá rozebrat jeho časová složitost, která je při přímočaré implementaci špatná, ale dá se vylepšit. Prostě mi z toho nakonec vychází perfektní úloha k pohovoru. Pokud vás úloha taky zaujala, zkuste si ji nejprve vyřešit sami: <?php Nevíte si s něčím rady? Nejste si jisti, jestli jste na něco nezapomněli? Podívejte se na nápovědu. Časem se dostaneme i k mému řešení. Než člověk začne, je dobré si uvědomit, že JavaScript běží v jednom vláknu. To znamená, že i když zavoláme setTimeout(f, 0), tak se funkce nespustí hned, ale teprve až když doběhne všechno ostatní. Není tedy potřeba lámat si hlavu s nějakým asynchronním plánováním a stačí všechno dávat do fronty a tu na konci spustit. Zavolali jste na konci skriptu jakousi vaši funkci processSetTimeout? Srabi! register_shutdown_function neznáte? Pokud jste nápovědu zohlednili, podívejte se na příklad, který by váš skript měl umět zpracovat. Příklad použití <?php Window::setTimeout(function () { echo "Wo"; Window::setTimeout(function () { echo "d!\n"; }, 1000); }, 1000); Window::setTimeout(function () { echo "rl"; }, 1500); echo "Hello "; ?> Příklad by měl pochopitelně vypsat Hello World!. Mazali jste se místo statických metod s normálními? A není náhodou čas tak trochu globální veličina? Pokud vám všechno funguje, podívejte ... - Pokračovat...
addthis





Poslední příspěvky z blogu:
php.vrana.cz



Zašlete svůj blog
Požadavky na Blog
Ochrana osobních údajů
Kontakty

This site uses Thumbshots previews