Heim > Backend-Entwicklung > PHP-Tutorial > Beim Schleifendurchlauf werden die aus der Datenbank abgerufenen Daten kombiniert, aber die Leistung ist nicht gut. Was soll ich tun?

Beim Schleifendurchlauf werden die aus der Datenbank abgerufenen Daten kombiniert, aber die Leistung ist nicht gut. Was soll ich tun?

WBOY
Freigeben: 2016-08-04 09:19:02
Original
1074 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Die endgültige Datenstruktur, die ich kombinieren möchte:

<code>[
    '2016-8-3' => [
        'data' => '',
        ...
    ],
    
    '2016-8-4' => [
        'data' => '',
        ...
    ]
    ..
]</code>
Nach dem Login kopieren
Nach dem Login kopieren

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?

Antwortinhalt:

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Die endgültige Datenstruktur, die ich kombinieren möchte:

<code>[
    '2016-8-3' => [
        'data' => '',
        ...
    ],
    
    '2016-8-4' => [
        'data' => '',
        ...
    ]
    ..
]</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

sein
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage