echo $begrüßung;
» Vielleicht ist es gar nicht das DBMS sondern PHP, das die Zeit verbraucht. Kommentier mal testhalber das Execute aus.
wenn ich es auskommentiere bekomme ich nach ca. 60s ein
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 12582912 bytes)
Hmm, dann bindet er sich anscheinend zu Tode.
Eine Idee hab ich noch: Verlager mal das Bind vor die Schleife und binde normale Variablen. Innerhalb der Schleife weist du diesen Variablen die XML-Ausdrücke zu. Also:
mysqli_stmt_bind_param($stmt, 'iss', $id, $ch1, $ch2);
und in der Schleife:
$ch1 = $xml->{"M$i"}->{"Ch1"};
$ch2 = $xml->{"M$i"}->{"Ch2"};
mysqli_stmt_execute($stmt);
Das sieht vielleicht etwas seltsam aus, aber durch das Binding werden aus den Variablen Referenzen. Ein Zuweisen erstellt dann keine neue Variable und wirft den alten Inhalt weg sondern weist den Zuweisungswert der Referenz zu. mysqli kennt durch die Bindung diese Referenz und greift beim Execute auf den aktuellen Inhalt zu.
Dies müsste eigentlich auch die vorgesehene Vorgehensweise bei Execute in Schleifen sein. Im Handbuch sieht man das bei den Beispielen zu mysqli_stmt_bind_param() dort allerdings mit nur einer Anwendung und ohne Schleife.
Bringt das auch noch keine Verbesserung dann miss zum Vergleich noch mal ohne Execute. Wenn das immer noch lange dauert, ist das XML-Zeug der Schuldige, denn dann ist ja dann nur noch dieses im Spiel.
echo "$verabschiedung $name";