2009-06-23 16 views
0

Ich arbeite an einem einmaligen PHP (5.2.6) -Skript, das mehrere Millionen von MySQL (5.0.45) -Datenbankzeilen in ein anderes Format in einer anderen Tabelle migriert, während (viel) relevant bleibt Daten im Speicher für inkrementelle Berechnungen. Die Daten werden inkrementell berechnet. (In Stücken von etwa 1000 Linien)Update-Skript stoppt nach dem Zufallsprinzip

Das Skript stoppt unerwartet in zufälligen Punkten ohne eine Fehlermeldung. Meine Frage ist - wie kann ich herausfinden, was der Grund für das Skript zu stoppen ist. (? Speicherausfall Timeout von MySQL etc ...)

Ich habe set_time_limit (0); so ist es nicht PHP-Timeout.

+0

Sie bekommen gute Vorschläge. Stellen Sie jedoch sicher, dass Sie nicht im abgesicherten Modus auf der Seite docs set_time_limit() ausgeführt werden: "Diese Funktion hat keine Auswirkungen, wenn PHP im abgesicherten Modus ausgeführt wird. Es gibt keine andere Umgehungsmöglichkeit als den abgesicherten Modus zu deaktivieren oder die Uhrzeit zu ändern limit in der php.ini. " http://php.net/set_time_limit – artlung

+0

Danke an alle. Die Lösung bestand darin, ini_set ('memory_limit', '200M') hinzuzufügen; Es war in der Tat ein Speicherproblem. – Nir

Antwort

2

die Protokolldatei zu sehen, ist wahrscheinlich Speicher

Sie mehr Speicher in php.ini memory_limit Parameter

1

Sie könnten hinzufügen müssen versuchen, die Fehlerberichterstattung Ebene drehen (in der php.ini) sehr hoch, so beschwert es sich über weitere Dinge.

Meine erste Vermutung wäre gewesen, dass Sie Ihre maximale Ausführungszeit oder Speicherlimit und das Skript beendet wurde getroffen, aber sie bedeckt das.

+0

set_time_limit deckt das Ausführungszeitlimit ab, nicht jedoch das Speicherlimit. Es ist möglich, dass das Speicherlimit erreicht wird. – MaxVT

1
  • Überprüfen Sie Ihre PHP-Protokolldatei aus.
  • Schalten Sie alle Fehlerberichterstattung
    • error_reporting(E_ALL | E_STRICT);
1

Haben Sie versucht, die PHP von der Kommandozeile ausgeführt wird, anstatt über einen Web-Browser? Vielleicht hat der Server etwas, was dazu führt, dass er umfällt, sobald er eine bestimmte Speichernutzung erreicht hat?

Im Allgemeinen sollten Bulk-Vorgänge nicht über einen Webserver ausgeführt werden, sondern können dazu führen, dass sie teilweise fehlschlagen.

0

Vielen Dank für die Hilfe (Ich habe für die relevanten Antworten gewählt). Das Problem war Speicher und Einstellung ini_set ('memory_limit', '200M'); löste es (es ist ein einmaliges Skript)

Verwandte Themen