Avatar billede weisel Nybegynder
30. december 2009 - 12:10 Der er 9 kommentarer

PHP - CSV - MySQL

Hej alle sammen

jeg sidder nuværende og arbejder på en funktion:
at automatisk indeksere csv filer som jeg får fra et ekstern system i en mappe, som skal automatisk blive loadet ind i en mysql database. dvs at hver gang en ny fil bliver smidt ind i en given mappe, at den automatisk bliver loadet ned i databasen.

jeg har allerede fået det til at virke med en specifik csv fil med data. Problemstillingen ligger i at der kommer til at være mange csv filer og systemet skal kunne skelne mellem dem, så for hver gang der kommer en ny, loade dem ind i databasen, sådan at jeg ikke skal bruge de csv filer hver gang, men at have dataen i en mysql database som jeg bedre kan bearbejde.

Håber der er nogen som har nogle ideer til dette :)
Avatar billede Slettet bruger
30. december 2009 - 15:17 #1
windows eller linux? En server ude i byen (hostning) eller egen computer?
Avatar billede weisel Nybegynder
31. december 2009 - 13:48 #2
hej, undskyld jeg ikke præciserede mig der :)

det er på XAMPP server på windows styresystem.
Avatar billede Slettet bruger
01. januar 2010 - 13:28 #3
Jeg tror det er lettest at lave som et php script. Spørgsmålet er så hvad der skal udløse at mappen kigges igennem - svaret afhænger af behovet. Er det nok blot at 'requeste en url' i browseren efter behov eller ønskes der en mere automatisk kørende opdatering?

Hvis ja, ville jeg skrive et program i java eller c++ der gjorde det samme - gentagende http requestet skrevet i php eller arbejdende direkte op mod mysql. Den forkromede løsning er en windows service

Man kunne prøve et lille hack (og se hvor meget det belaster systemmet) - smid følgende 1 linies bat fil:

wget -q <phpscript url>

i windows opgavestyring, sættende det til at gentages med ønsket interval. wget er et program der henter en side ned som fil - er open source - kan findes på nettet.

---------

I øvrigt interessant at erfare at der nu findes en samlet pakke til windows i form af XAMPP
Avatar billede weisel Nybegynder
01. januar 2010 - 17:08 #4
hej

ja jeg tænker også på at lave en php fil som læser alle filer i specifieret mappe, derefter tager den nyeste fil, og smider det ind MySQL.
evt. en session timer på denne funktion ?
Avatar billede Slettet bruger
01. januar 2010 - 18:43 #5
En session timer - hvad er det? er det ikke blot forlængelse af en sessions udløbstid?
Jeg mener ikke man kan lave et program i php webserver sammenhæng, der kører hele tiden - eller måske, men det, IMHO noget mærkeligt noget.
En server svarer og laver ellers ikke andet end vente på ny forespørgsel.
Man kan godt lave en php side der retunerer noget javascript som så  står og fyrer requests af (opdatering af side) - det skal så manulet startes i browseren og siden må ikke lukkes = dårlig løsning!

Hvorfor ikke udføre det 'on demand' - samle det hele i en php funktion og udføre denne i alle de sammenhænge hvor du vil anvende resultatet.
Avatar billede Slettet bruger
01. januar 2010 - 19:17 #6
tilføjelse til #5: Hvis man har noget funktionalitet som evt. tager lidt længere tid en det er hensigtsmæssigt at vente på et webside svar, kan man afslutte med:

register_shutdown_function('<php function>');

... og på den hacke sig til det jeg advarede imod! Man skal sørge for at <php function> kun kan kører i en tråd - altså en  applikation scope og mutex beskyttet variabel der testes på, som det første, for at se om det er første kald.
I princippet er det udefineret hvad der sker når webserveren lukker ned, med mindre man er i stand til at lytte med på de signaler som lukker den ned - aner ikke om man kan det i php!
Endeligt ville det nok ikke være populært på en rigtig webserver der har mange virtual host
Avatar billede weisel Nybegynder
06. januar 2010 - 09:34 #7
hmm

Det skal foregå automatisk, jeg ved fra et andet system hvornår jeg får en ny CSV fil som skal loades ind til databasen, hjælper det på en løsning ?
Avatar billede Slettet bruger
08. januar 2010 - 12:15 #8
Måske ? På hvilken måde signalerer 'det andet system' at der kommer en csv fil?
Avatar billede weisel Nybegynder
11. januar 2010 - 10:31 #9
signalerer ikke andet end at spytte en csv fil i en mappe, 1 gang i døgnet :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester