Autor | Zpráva | ||
---|---|---|---|
ShiraNai7 Profil |
#1 · Zasláno: 30. 1. 2010, 18:51:31 · Upravil/a: ShiraNai7
Následující kód natvrdo shodí apache nebo vyčerpá všechen limit paměti (chce alokovat asi 2GB) a skončí fatal errorem.. čím to? (PHP: 5.2.9, Apache: 2.2.11, OS: XP SP3)
function foobar($match) { $GLOBALS['omg'] = $match; //print_r($match); } preg_replace_callback('%(.*)%', 'foobar', 'Bla bla bla'); Když si odkomentujete to print_r a zakomentujete tu asociaci do globals, tak se vám to normálně vypíše. |
||
AM_ Profil |
#2 · Zasláno: 30. 1. 2010, 19:36:07
Mám Apache 2.2.11, php 5.3.0, Win7 a nepadá to. Takže asi opravdu bug v 5.2.9. Každopádně zajímavý :)
|
||
ShiraNai7 Profil |
#3 · Zasláno: 30. 1. 2010, 19:39:10
Asi nějaký memory leak slušně brutální.. no nic, děkuji za reakci. Já to nepotřebuji tímto způsobem zpracovávat, jen jsem se do této situaci dostal jednou svou debugovací funkcí a nepochopil jsem co a jak.
|
||
Majkl578 Profil |
#4 · Zasláno: 30. 1. 2010, 20:00:40
U mě na localhostu (PHP 5.3.1, Debian, Apache 2.2.14) je to OK.
|
||
Kcko Profil |
#5 · Zasláno: 30. 1. 2010, 20:20:00
Taky shodi, verze 5.2.9 za to muze toto
function foobar($match) { $GLOBALS['omg'] = $match; //print_r($match); } preg_replace_callback('%(.*)%', 'foobar', 'Bla bla bla'); |
||
Majkl578 Profil |
#6 · Zasláno: 30. 1. 2010, 20:57:18
Můžu vědět, k čemu je dobré v PHP5 použití GLOBALS?
|
||
ShiraNai7 Profil |
#7 · Zasláno: 30. 1. 2010, 22:15:21 · Upravil/a: ShiraNai7
O zadne globals tu nejde.. tohle je zobecneny kod pro reprodukci te chyby, ktera nastane, kdyz se funkce nastavena jako callback pokusi prenest hodnotu sveho argumentu volanim mimo jeji scope. Narazil jsem na to nahodou, kdyz jsem z callbacku volal svoji debugovaci funkci (ktere jsem predal ten $match). Urcite se to nema pokusit sezrat x giga ramky a shodit apache :)
|
||
Yur4Y Profil |
#8 · Zasláno: 31. 1. 2010, 09:41:52
Táto chyba bola opravená v PHP 5.2.10.
|
||
ShiraNai7 Profil |
#9 · Zasláno: 31. 1. 2010, 10:09:09
Ok, diky :)
|
||
Časová prodleva: 14 let
|
0