Autor Zpráva
Jan Doležal
Profil
Ahoj,

mám takový zajímavý problém (Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8t PHP/5.4.11).
Jde o to, že pro administraci je to pár desítek js souborů (http://pastebin.com/9HnX6jgC). V případě, že je vepíše všechny do jedné komponenty, tak prohlížeč zobrazí chybu: Spojení přerušeno – Spojení se serverem bylo v průběhu načítání stránky ukončeno.

Něco jsem testoval a zjistil jsem, že pokud předám 17+ souborů, tak to spadne (ukončí spojení). Bohužel nikde žádná informace v logu. Úplně stejný kod v linuxu funguje bez problému.

Komponenta funguje tak, že vezme dané soubory, otevře je a zkopíruje obsahy do jednoho souboru.

Nemáte nějaký nápad na řešení?
Davex
Profil
Tato chyba často znamená, že zhavarovalo PHP nebo došla paměť. Zkus určit problematickou část kódu postupným zjednodušováním komponenty. Co pamatuji, tak často padání způsobovalo připojení k MySQL databázi na localhost v OS Windows 7, když bylo zapnuté IPv6 nebo modul eAccelerator v PHP. Složitější regulární výrazy vypuštěné na větší množství dat dokážou často také potrápit (o zabugovaném ereg* ani nemluvím).
Jan Doležal
Profil
Davex:
Zkoušel jsem ještě nějaké věci a opravdu je problém v počtu. Například jsem zkusil jquery, jež jsem několikrát okopírova až měl výsledný soubor 10MB a bez problému se to zpracovalo. Uvedený příklad v prním postu nemá ani 1MB.

Jinak eAccelerator nemám a pamět je na 1024M

Žádné filtry to neobsahuje. Prostě jen vzít obsah souborů a zkopírovat do jednoho.

EDIT: Tak přeci jen v lgou apache něco je. Při zadání adresy, kde zniká daný problém se v logu objeví:
[Sun Jan 27 17:19:48 2013] [notice] Parent: child process exited with status 255 -- Restarting.
[Sun Jan 27 17:19:49 2013] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8t PHP/5.4.11 configured -- resuming normal operations
[Sun Jan 27 17:19:49 2013] [notice] Server built: Jan 28 2012 11:16:39
[Sun Jan 27 17:19:49 2013] [notice] Parent: Created child process 2428
[Sun Jan 27 17:19:49 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun Jan 27 17:19:50 2013] [notice] Child 2428: Child process is running
[Sun Jan 27 17:19:50 2013] [notice] Child 2428: Acquired the start mutex.
[Sun Jan 27 17:19:50 2013] [notice] Child 2428: Starting 64 worker threads.
[Sun Jan 27 17:19:50 2013] [notice] Child 2428: Starting thread to listen on port 80.
a to dělá stále dokola.
Davex
Profil
Spojování více souborů do jednoho běžně funguje, takže může být chyba ve způsobu, jak to děláš ty.
Jan Doležal
Profil
Davex:
Osobně mi tam nepřijde nic, co by mohlo extra vadit.
https://github.com/janmarek/WebLoader/tree/master/WebLoader

Hlavně, na linuxu to jede. Windows dělají zase problémy.
Davex
Profil
Vypadá to jako hodně paměťově náročná komponenta. K pouhému spojení souborů trochu jako kanón na vrabce :-)

Zkus zvětšit velikost stacku v konfiguraci Apache.

<IfModule mpm_winnt_module>
  ThreadStackSize 8388608
</IfModule>
Jan Doležal
Profil
Davex:
Vypadá, že to funguje. :) Děkuji.

PS: Já používám i filtry na změnšení atd, ale nejdřív jsem chtěl rozchodit jen klasické spojení souborů.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: