2009-05-08 9 views
2

Mein Skript verhält sich seltsam. Nach einer foreach-Schleife stoppt das Skript. Ich habe keinen Fehler, keine Warnung oder Nachricht von Apache. Dies ist der Code:Mein Skript stoppt nach einer foreach Schleife

foreach($clientFact as $line) 
{ 
    $cliTemp1[] = $line["idcliente"]; 
    echo "qwerty"; 
} 
echo "123"; 

Wenn ich ein „Echo (qwertz“) hinzufügen qwertz“innerhalb der Schleife, werden die zeigen,‚‘aber direkt nach dem Ende der Schleife es nichts tun.

Fehle ich etwas ?!

Dank

+1

Sieht ok aus ... könnte es nicht genügend Speicher haben? – Greg

+0

Ich denke, diese Zeile gibt Ihnen ein Problem. $ cliTemp1 [] = $ line ["idcliente"]; Bitte überprüfen Sie $ cliTemp1 [], Array-Index darin angeben. –

+0

haben Sie versucht, var_dump ($ clientFact) zu setzen; Ausfahrt; vor der Schleife? – gradbot

Antwort

9

Apache würde nicht einen Fehler als ein PHP-Fehler zurück. Hinzufügen

auf der Oberseite Ihrer Seite ist eine sehr gute Idee, so dass Sie jeden Fehler sehen können, der passiert. Es könnte auch Ihr Fehlerhandler sein, der den Fehler nicht anzeigt und nur das Skript beendet.

Wenn es ein Problem mit der Fehlerbehandlung ist, fügen Sie

restore_error_handler(); 

vor der error_reporting Funktion

Edit: Ihr Kommentar über den Array-Index lesen. Es klingt definitiv wie ein Speicherlimit in PHP erreicht wird, wenn es jedes Mal bei einem bestimmten Index stoppt.

Sie könnten verwenden:

ini_set('memory_limit', '100M'); 

Ihre Speichergrenze zu 100megs ändern. Nicht empfohlen, aber wenn es funktioniert, ist es ein Problem mit nicht genug Speicher. Versuchen Sie, Ihr Programm zu refaktorieren, so dass es weniger Speicher verbraucht

+0

Das Ändern des Speicherlimits hat mein Problem gelöst. Danke – RSilva

+0

Klingt wie Ändern des Speicherlimits * identifiziert * Ihr Problem. Da du in einem Kommentar gesagt hast "Morgen wird mehr sein, sicher", denke ich, dass du etwas anderes tun musst, um dein Problem zu lösen. Sie sollten wahrscheinlich einen Weg finden, was Sie tun müssen, ohne das gesamte $ cliTemp1-Array auf einmal zu laden. – bmb

4

die Syntax oben sieht alles gut aus, so als komplette Schuss im Dunkeln hier - wie groß die $clientFact Array ist, ist es möglich, dass die $cliTemp1 Array so groß wird es stolpern ein Speicherlimit?

Vielleicht statt Echo "QWERTY", Echo der Inhalt von $line["idcliente"] bei jeder Iteration, um sicher zu sein, dass Sie alle Elemente in $clientFact erfolgreich durchkommen.

+0

statt QWERTY Ich habe gerade einen Zähler innerhalb der Schleife hinzugefügt und er stoppt immer in der Iterationsnummer 11815. Mein Array hat 109247 Elemente, heute. Morgen wird es mehr sein. – RSilva

+0

OK, klingt wie das OOM-Problem dich getroffen hat. Ozzys Vorschlag ist richtig –

1

Bei einer Schätzung, sterben Sie auf einen Fehler innerhalb der Schleife, weil einer Ihrers ist kein Array wie Sie erwarten, und der Fehler wird ausgeblendet. Versuchen Sie die Einstellung error_reporting(E_ALL) vor der Schleife und möglicherweise ini_set('display_errors', true).

+0

Wie ich bereits sagte, gibt Apache keinen Fehler, Warnung oder Hinweis zurück. – RSilva

+0

Yeeaaah .... Ich sage das ist wahrscheinlich, weil sie unterdrückt werden. Ich weiß aber nichts über deine php.ini-Einstellungen, also ist es nur eine Einstellung im Dunkeln. – chaos

+0

Sie müssen PHP auch konfigurieren, um alle Fehler anzuzeigen. Standardmäßig sind sie nicht sichtbar. –