Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

Hjælp til PHP/MySQL

Side 1 ud af 1 (6 indlæg)
  • 1
Fra 9560 Hadsund
Tilmeldt 28. Sep 05
Indlæg ialt: 1298
Fra  Conseo Skrevet kl. 19:10
Hvor mange stjerner giver du? :

Hej Aminoer

Jeg sidder og roder lidt med et lille projekt. Det er primært for at øve mig lidt i PHP, men jeg er stødt på en lille udfordring.

Jeg henter en XML fil med noget data, og viser på siden, men samtidig smider jeg hele indholdet i en MySQL database. For ikke skulle hente XML filen hver gang, vil jeg gerne tjekke i databasen om den findes først og hvis den ikke er mere en 24 timer gammel, så skal data fra DB'en hentes, ellers skal XMl filen hentes.

Har en tabel i databasen der hedder MyTable, og der er et felt med DATETIME (som hedder "updated") med dato for hvornår XML filen sidst er hentet.

Jeg er kommet her til:

// Tjek om datoen er gammel
$sqlDato = mysql_query("SELECT updated FROM MyTable WHERE updated > DATE_SUB(NOW(), INTERVAL 24 HOUR) AND tname = '$q'");

tname er den XML fil der hentes, så jeg laver altså en SELECT fra MyTable hvor updated er mere en 24 timer gammel og tname er den fil der spørges på.

Det jeg har brug for hjælp til er om jeg er på rette spor med den SQL sætning, og hvordan jeg tjekker resultatet?

Jeg tænker noget:

If $sqlDato ikke er tom, så hent fra XML ellers hent fra DB...

Er der en hardcore Amino med PHP skills, der kan hjælpe mig på rette vej?

På forhånd tak.

Fra København
Tilmeldt 25. Feb 09
Indlæg ialt: 175
Fra  BitMasch Skrevet kl. 19:27
Hvor mange stjerner giver du? :

Hej Lars,

Det du er ved at lave kan selvfølgelig sagtens laves med en database, men at bruge en cache som f.eks. memcached eller APC er en del nemmere når der blot er tale om at cache (gemme data som man skal bruge, "tættere" på hvor det skal bruges, så det er hurtigere at læse).

De fleste PHP webhoteller skulle gerne have APC installeret (selvom det er længe siden jeg har benyttet andet end egen hosting mener jeg de har det installeret).

Der kan du gemme en værdi, f.eks. med:

apc_store('min_kaempe_xml_fil', $xml, 86400)

for at gemme noget en værdi i cachen. Den første streng er din cache key, som skal være unik (hvis du ikke gemmer andet i cachen er det fint med den jeg har valgt i eksemplet. $xml er din xml, som du har hentet. Og de 86400 er antal sekunder værdien skal gemmes (86400 = 1 dag).

Når du så skal bruge din værdi, kan du gøre noget lignende det her (det hele sat sammen):

$xml = apc_fetch('min_kaempe_xml_fil');

if(false === $xml)

{

//Hent xml fra nettet

$xml = file_get_contents('http://test.domain/foo.xml');

apc_store('min_kaempe_xml_fil', $xml, 86400)

}

//Brug XML filen til noget

$simpleXml = simplexml_load_string($xml);

Softwareudvikler med speciale indenfor skalerbare webløsninger. PHP, MySQL, Puppet, Python, Apache, nginx, HTML5, m.m.
http://bitmasch.com/

Tilmeldt 20. Apr 07
Indlæg ialt: 16014
30% af profil udfyldt
Skrevet kl. 19:29
Hvor mange stjerner giver du? :
Gennemsnit 5,0 stjerner givet af 2 person

Som en første kommentar så please please please lad vær med at bruge det gamle mysql interface! Det er gammelt, bliver ikke længere udviklet, bliver fjernet fra nyere php udgavere og er generelt ikke særlig sikkert. Brug istedet mysqli eller pdo (http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/) 

For at tjekke resultatet kan du jo tjekke hvor mange rows du får tilbage ved mysql_num_rows (hvis du vælger at ignorer overstående), mysqli_stmt_num_rows, eller ->rowCount() hvis du bruger pdo.

Fra Aarhus
Tilmeldt 7. May 13
Indlæg ialt: 967
Skrevet kl. 19:42
Hvor mange stjerner giver du? :

Hvad er det for data?
Hvor meget data er der tale om?
Hvor ofte tilgår du de data i løbet af de 24 timer, som du selv nævner?

PHP Freelancer med speciale i Laravel og API integrationer

Fra 9560 Hadsund
Tilmeldt 28. Sep 05
Indlæg ialt: 1298
Fra  Conseo Skrevet kl. 15:19
Hvor mange stjerner giver du? :

Tak for tips.

Jeg har rodet lidt med caching, og det kunne godt gå hen og blive løsningen på det.

Det er et Twitter tool jeg arbejder på, som henter danske Twitter profiler ind, så data hentes hver gang der loades en side/profil.

Fra København S
Tilmeldt 1. Feb 06
Indlæg ialt: 3533
Fra  Kim Tetzlaff ApS Kim Tetzlaff Ejendom Skrevet kl. 15:34
Hvor mange stjerner giver du? :

Lars Bachmann:
Det er et Twitter tool jeg arbejder på, som henter danske Twitter profiler ind, så data hentes hver gang der loades en side/profil.
Hvis du forventer at der kommer mange besøg, skal du nok også tænke lidt over html caching, så den ikke henter hver gang, da twitter vidst nok har et max antal aflæsninger. jeg plejer at anbefale at man laver en html caching af twitter blokken på 5 minutter, så man ikke kommer over det antal, men hvis der er mange profiler kan det være du ender ud i at du skal sætte den endnu højere.

MVH Kim


Kim Tetzlaff


🚀 Hastighedsekspert ⚙️WordPress hjemmesider 🎯SEO
Siden 1995 - hjemmeside Udvikling og teknisk optimering af hjemmesider
👉 Mere om mig

Side 1 ud af 1 (6 indlæg)