Autor | Zpráva | ||
---|---|---|---|
Prochy Profil |
#1 · Zasláno: 13. 8. 2014, 12:57:40
Zdravim,
přebírám jeden projekt, kde programátor asi moc nestíhal a byl trochu méně spolehlivý, co se týče časových dohod. Projekt měl hozený na svém serveru. Teď jsem to hodil na hosting, kde by měla aplikace fungovat. Na řádku $sql = call_user_func_array(array($this, "get". ucfirst($name)),$arguments); Chodí chybu: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 50854 bytes) Pokud tomu rozumím, tak tahle funkce zavolá funkci s názvem getNejakyNazev v dané třídě a předá ji případně v parametru $arguments. Když si dumpnu "get". ucfirst($name)) , tak to je po řádkách $prechodzi."get". ucfirst($name)) . Počítám, že tohle není chyba serveru, ale chyba v kódu, jelikož se to zacyklí a neustále se volá funkce a zanoří se to až do té doby, dokud nedojde volné místo v paměti. Je to tak?
Děkuji |
||
Virtus Profil |
Zdravím,
chyba Allowed memory size...., může být způsobena ledazčím, každopádně to zacyklení vypadá v tomto případě jako nejpravděpodobnější, s extension do php xdebug si to můžeš snadno ověřit, protože přidává do PHP kontrolu zacyklení xdebug.max_nesting_level : http://www.xdebug.org/docs/basic, možná než kontrola by bylo lepší říct možnost nastavit hloubku/úroveň vnoření
|
||
Prochy Profil |
Virtus:
Díky za informaci o xdebug pluginu. Měl jsem pravdu, vyhodí to chybu na tom zanoření. |
||
Tori Profil |
#4 · Zasláno: 14. 8. 2014, 10:01:25
Prochy:
To vypadá jako kdyby implementace __get() a __call() volaly střídavě jedna druhou. Možná stačí doplnit ten veřejný getter. |
||
Časová prodleva: 10 let
|
0