2010-06-24 7 views
3

J'utilise donc PHPExcel (http://phpexcel.codeplex.com/) pour importer une feuille Excel. tout fonctionne bien sur mon système de développement, MAIS cela ne marche pas tout à fait sur le système live.return var ne fonctionne pas lorsque var est énorme?

D'où j'ai débogué et regardé ce qui pourrait être faux. Je suis arrivé à un point où j'ai trouvé qu'une méthode renvoyait évidemment NULL, où elle aurait dû renvoyer un objet. J'ai regardé dans cette méthode, et var_dump() ed la var qui a été retournée dans la méthode. le var était NOT NULL

PSEUDO CODE:

class Bar() 
{ 
function methodInAClass() 
{ 
    $test = new Foobar; 
    [...] 
    /* $test was an object here with a lot of data (var_dump() 
    * took around 100.000 lines in an editor) */ 
    var_dump($test); 
    return $test; 
} 
} 

$bar =& new Bar(); 
$test2 = $bar->methodInAClass(); //$test2 is NULL here 

Qu'est-ce que je fais mal? Est-ce un problème qui vient du php.ini?

Répondre

0

Je ne vois aucune raison pour que cela se produise. À moins que vous ne fassiez quelque chose de drôle, vous ne nous montrez pas, je ne vois pas comment vous pourriez vérifier cela sans un débogueur natif, où vous pourriez, par exemple, mettre un point d'arrêt de données sur le contenu de l'objet. Et en passant, il n'y a aucune raison de faire $bar =& new Bar(); au lieu de $bar = new Bar(); (en PHP5); en fait, le premier est obsolète.

+0

Je pense que vous voulez dire le contraire, n'est-ce pas? * il n'y a aucune raison de faire $ bar = ** & ** new Bar(); au lieu de $ bar = new Bar(); * –

+0

@Fel oui; Je l'ai réparé, merci. – Artefacto

0

PHP ne devrait pas se soucier de la taille de la valeur retournée si c'est l'objet réel retourné (comme c'est le cas dans ce cas). Des détails plus explicites pourraient aider, parce que votre exemple cité devrait fonctionner sans problème ... Je connais un peu PHPExcel. Quelle version utilisez-vous? Quel objet retournez-vous? (IIRC il n'y a pas un objet Foobar dans la bibliothèque) Utilisez-vous une mémoire cache?

1

Une limite de mémoire plus élevée semble avoir résolu le problème!

+0

Cela ressemble à un bug, pour être honnête. Si c'est parce qu'il manque de mémoire alors vous devriez obtenir une erreur et pas de données corrompues. Essayez de soumettre un bug à http://bugs.php.net –