Ich habe Tausende von Daten in das Array, das von XML analysiert wurde .. Mein Anliegen ist die Bearbeitungszeit meines Skripts, Beeinflusst es die Bearbeitungszeit meines Skripts, da ich hunderttausend Datensätze habe in die Datenbank eingefügt werden? Gibt es da einen Weg, wie ich die Einfügung der Daten in die Datenbank im Batch bearbeite?Batch-Verarbeitung in Array mit PHP
Antwort
Dies ist für SQL-Dateien - aber Sie können es Modell folgen (wenn es nicht einfach zu benutzen) -
Es teilt die Datei in Teile, die Sie, sagen wir 3000 Zeilen angeben können, und dann fügt sie auf Zeit Intervall < 1 Sekunde bis 1 Minute oder mehr.
diese Weise eine große Datei usw. in kleinere Einsätze gebrochen
Dieser Bypass wird dazu beitragen, die PHP-Server-Konfiguration Bearbeitung und über Speichergrenzen etc. wie Skriptausführungszeit und dergleichen sorgen.
Neue Benutzer können keine Links einfügen, so Google "SQL großen Dump" Suche oder wenn diese goto funktioniert: www [dot] Ozerov [dot] de [slash] bigdump [dot] php
So konnte man Ändern Sie das obige Skript sogar theoretisch, um das Array als Datenquelle anstelle der SQL-Datei zu akzeptieren. Es würde offensichtlich einige Modifikationen erfordern.
Ich hoffe, es hilft. -R
Es ist unwahrscheinlich, dass sich dies auf die Verarbeitungszeit auswirkt, aber Sie müssen sicherstellen, dass die Transaktionsprotokolle der Datenbank groß genug sind, um ein Rollback-Segment für 100k Zeilen zu erstellen.
Syntax ist:
INSERT INTO tablename (fld1, fld2) VALUES (val1, val2), (val3, val4)... ;
So Sie smth schreiben kann. so (Dummy Beispiel):
foreach ($data AS $key=>$value)
{
$data[$key] = "($value[0], $value[1])";
}
$query = "INSERT INTO tablename (fld1, fld2) VALUES ".implode(',', $data);
Das funktioniert recht schnell Veranstaltung auf große Datensätze und über die Leistung keine Sorge, wenn Sie Ihre Datenmenge im Speicher paßt.
Oder mit dem ADOdb Wrapper (http://adodb.sourceforge.net/):
// assuming you have your data in a form like this:
$params = array(
array("key1","val1"),
array("key2","val2"),
array("key3","val3"),
// etc...
);
// you can do this:
$sql = "INSERT INTO `tablename` (`key`,`val`) VALUES (?, ?)";
$db->Execute($sql, $params);
Sie array_chunk gedacht? Es funktionierte für mich in einem anderen Projekt http://www.php.net/manual/en/function.array-chunk.php
- 1. Wie Array Array in phpmyadmin mit PHP
- 2. PHP Such-Array in Array
- 3. MongoDB PHP mit $ in mit Array
- 4. Loop-Array mit PHP
- 5. von Array in PHP
- 6. Array-Mapping in php
- 7. PHP - Array mit einem anderen Array sortieren
- 8. RegEx in PHP-Array
- 9. Array in PHP lesen
- 10. Reverse-Array in PHP
- 11. php array in kombinationen
- 12. Array Schnittpunkt mit verschiedenen Dimensionen in PHP
- 13. Liefertage in Städten mit array() PHP
- 14. assoziatives Array in Art mit PHP
- 15. neues Array mit nur Werten in PHP
- 16. Insert Array in mongodb mit PHP
- 17. schreiben PHP-Array in HBase mit thrift
- 18. Array Kreuzung in mehrdimensionalen Arrays mit PHP
- 19. PHP mit foreach in einem Array
- 20. verschmelzen multidimensionale PHP-Array mit in
- 21. Einsatz assoziatives Array in mysql mit php
- 22. Array in Klammern in PHP (Array)
- 23. Sichere PHP-Funktionen mit Array?
- 24. PHP-Array mit for-Schleife
- 25. TextArea- zu Array mit PHP
- 26. PHP: Hilfe mit Array-Struktur
- 27. PHP-Speicherfehler mit großem Array
- 28. PHP, Random-Array mit Schlüssel
- 29. Benutzereingaben mit PHP-Array vergleichen
- 30. PHP Set Array mit Variable
Vielen Dank für Ihren Rat! Ich schätze es wirklich, ich würde versuchen, einen Code das gleiche Konzept wie große Dump machen oder einfach nur ändern .. danke nochmal! – text