2020-05-16, 14:00
  #1
Bannlyst
Har ca 5000 personer i min databas.
Använder denna script för att skriva ut allas pengar men det tar runt 2-3 minuter.

Hur kan jag göra så åtminstonde en efter en echo skrivs ut så att processen ser ut att gå snabbare?

Det jag försker skriva ut är echo '<td >TEXT</td>';

[PHP]<?php
require_once 'php/db.php';

$query = "SELECT * FROM databas ORDER BY `pengar` DESC LIMIT 1000";

$result = $test_db->query($query);
while($results = $result->fetch_array()) {
$result_array[] = $results;
}

$i=0;

foreach ($result_array as $result)
{
echo '<tr>';
echo '<td >TEXT</td>';
echo '</tr>';
}
?>
[/PHP]
Citera
2020-05-16, 14:14
  #2
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av TrixNe
Har ca 5000 personer i min databas.
Använder denna script för att skriva ut allas pengar men det tar runt 2-3 minuter.

Hur kan jag göra så åtminstonde en efter en echo skrivs ut så att processen ser ut att gå snabbare?

Det jag försker skriva ut är echo '<td >TEXT</td>';

[PHP]<?php
require_once 'php/db.php';

$query = "SELECT * FROM databas ORDER BY `pengar` DESC LIMIT 1000";

$result = $test_db->query($query);
while($results = $result->fetch_array()) {
$result_array[] = $results;
}

$i=0;

foreach ($result_array as $result)
{
echo '<tr>';
echo '<td >TEXT</td>';
echo '</tr>';
}
?>
[/PHP]

Varför inte bara printa i loopen där du bygger upp arrayen?

För att vara tydligare - Gör echo från while-loopen istället, och ta bort foreach-loopen. Då kommer du printa för varje element du stoppar i arrayen istället för att bygga hela arrayen och sen printa hela. Det är vad jag tolkade det som att du frågar efter.
__________________
Senast redigerad av Trollfeeder 2020-05-16 kl. 14:17.
Citera
2020-05-16, 14:31
  #3
Medlem
Protons avatar
Citat:
Ursprungligen postat av TrixNe
Har ca 5000 personer i min databas.
Använder denna script för att skriva ut allas pengar men det tar runt 2-3 minuter.

Hur kan jag göra så åtminstonde en efter en echo skrivs ut så att processen ser ut att gå snabbare?

Det jag försker skriva ut är echo '<td >TEXT</td>';

[PHP]<?php
require_once 'php/db.php';

$query = "SELECT * FROM databas ORDER BY `pengar` DESC LIMIT 1000";

$result = $test_db->query($query);
while($results = $result->fetch_array()) {
$result_array[] = $results;
}

$i=0;

foreach ($result_array as $result)
{
echo '<tr>';
echo '<td >TEXT</td>';
echo '</tr>';
}
?>
[/PHP]

Citat:
Ursprungligen postat av Trollfeeder
Varför inte bara printa i loopen där du bygger upp arrayen?

För att vara tydligare - Gör echo från while-loopen istället, och ta bort foreach-loopen. Då kommer du printa för varje element du stoppar i arrayen istället för att bygga hela arrayen och sen printa hela. Det är vad jag tolkade det som att du frågar efter.
Undrar detsamma, först laddar du en array med data och sen går du igenom arrayen en gång till?!? Vad är meningen med det?

För det andra kommer du inte kunna få php ensamt att plutta ut rad för rad, utan du kommer behöva ett javascript som dynamiskt uppdaterar din html i sådana fall, men det kommer troligen inte tillföra nåt.

Det jag däremot hade chansat på vore (efter att ha tagit bort den onödiga genomgången av arrayen ytterligare en gång) vore att skriva alltihop till en buffer och sen skicka ut din buffer till webläsaren.

Hur man buffrar utskrifter i php framgår av dess manual, alternativt https://stackoverflow.com/questions/2832010/what-is-output-buffering för början av förkovring.
Citera
2020-05-23, 13:52
  #4
Medlem
Om du är motiverad att snabba upp det där så byt till rendering client side. Utifrån vad jag vet nu så ser jag ingen anledning till att traggla med table-delar sådär på servern.

Förslag:
- Hämta från databasen med fetch all, om server-resurserna tillåter. Att hämta en rad i taget med fetch_array() innebär en massa roundtrips och är väl resursvänligt, men definitivt inte effektivt om man ska hämta mycket data snabbt.
- Gör så lite som möjligt med datat på servern, skicka som JSON så fort som möjligt till klienten. JSON är lätt att hantera i javascript, loopa igenom arrayen med rader där och skapa en tabell/table i klienten. (Man kan prata en stund om hur man visar en tabell med data effektivt, men det är kanske bäst i en ny tråd ) Tyng inte ner servern med klientens jobb.
- Paginering! (Om möjligt/applicerbart?)
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in