Heim > Artikel > Backend-Entwicklung > Beim Schleifendurchlauf werden die aus der Datenbank abgerufenen Daten kombiniert, aber die Leistung ist nicht gut. Was soll ich tun?
Anforderung: Statistik der täglichen Daten basierend auf Start- und Endzeit
Die aus der Datenbank abgerufenen aktuellen Daten bestehen aus etwa 10 zweidimensionalen Arrays mit der gleichen Struktur wie folgt:
<code>[ '0' => [ 'time' => '2016-8-3', 'data1'=> 'xxx', ... ] ]</code>
Da es in jedem Array erforderliche Felder gibt, müssen diese 10 zweidimensionalen Arrays kombiniert werden. Die Idee ist wie folgt:
Daten basierend auf dem Datum durchlaufen und abrufen
<code>while (strtotime($start_time) < strtotime($end_time)) { // 10个foreach foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } ... $start_time = strtotime($start_time . ' +1 day'); }</code>
Die endgültige Datenstruktur, die ich kombinieren möchte:
<code>[ '2016-8-3' => [ 'data' => '', ... ], '2016-8-4' => [ 'data' => '', ... ] .. ]</code>
Aber es scheint, dass die Leistung dieser Zeit sehr schlecht ist und die Daten nicht ausgeführt werden können. Nach langem Warten wird direkt angezeigt:
Maximale Ausführungszeit von 30 Sekunden überschritten
Haben Sie Habt ihr gute Vorschläge?
Anforderung: Statistik der täglichen Daten basierend auf Start- und Endzeit
Die aus der Datenbank abgerufenen aktuellen Daten bestehen aus etwa 10 zweidimensionalen Arrays mit der gleichen Struktur wie folgt:
<code>[ '0' => [ 'time' => '2016-8-3', 'data1'=> 'xxx', ... ] ]</code>
Da es in jedem Array erforderliche Felder gibt, müssen diese 10 zweidimensionalen Arrays kombiniert werden. Die Idee ist wie folgt:
Daten basierend auf dem Datum durchlaufen und abrufen
<code>while (strtotime($start_time) < strtotime($end_time)) { // 10个foreach foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } foreach($arr as $k => $v) { if (strtotime($start_time) == strtotime($v['time'])) { $data[] = $v[]; ... } } ... $start_time = strtotime($start_time . ' +1 day'); }</code>
Die endgültige Datenstruktur, die ich kombinieren möchte:
<code>[ '2016-8-3' => [ 'data' => '', ... ], '2016-8-4' => [ 'data' => '', ... ] .. ]</code>
Aber es scheint, dass die Leistung dieser Zeit sehr schlecht ist und die Daten nicht ausgeführt werden können. Nach langem Warten wird direkt angezeigt:
Maximale Ausführungszeit von 30 Sekunden überschritten
Haben Sie Habt ihr gute Vorschläge?
Es liegt ein Problem mit Ihrer Schleife vor, das zu einer Endlosschleife führt. Sie können die $start_time und $end_time jedes Zyklus ausdrucken. Es muss strtotime($start_time) < strtotime($end_time)
immer wahr