Hallo,
Ik moet op het moment voor mijn stage een web-applicatie maken, met als back-end een FileMaker 8 database. De kenners hoef ik vast niet uit te leggen dat dit geen SQL taal is.
Via een ODBC-koppeling kan je echter wel SQL-commando's op de database afvuren, dit werkt ook. Echter is de performance in combinatie met PHP zwaar belabberd: 0,2 seconde per veld van een record ongeveer. Om 10 records met 3 velden op te vragen ben je dus 6 seconde bezig. Dit neemt lineair toe, en is dus niet mogelijk op deze manier fatsoenlijk gebruik van te maken.
Nu ben ik adhv de taskmanager erachter gekomen dat Filemaker bij het opbouwen van de site heel even actief is, en het lijkt alsof hij in ongeveer een halve seconde de data gewoon heeft doorgegeven aan Apache of de ODBC engine. Vervolgens zit er een 4-5-tal seconde tussen zonder processor load maar met een enorm geratel van de hdd. Daarna gaat de load van Apache even omhoog en staat de pagina ineens voor je neus.
Het probleem doet zich zowel met IIS als met Apache voor. Ook PHP4 ipv 5 maakt geen verschil. Het lijkt alsof de ODBC engine (DataDirect 32-BIT SequeLink 5.5 (5.4 ook geprobeerd)) het enorm moeilijk heeft.
Filemaker spuugt zo ver ik weet XML uit, dus ik kan me voorstellen dat het een lastige vertaalslag is. Echter gaat importeren via dezelfde ODBC koppeling in Excel zonder enig probleem en super snel!
Is dit een bekend probleem, of weet iemand de oplossing?
Stukje code dat ik gebruik om te testen:
Zoals je ziet zit er helemaal op het eind ook nog een insert query: deze is er slechts om de performance te testen. Deze is namelijk wel super snel.
Nu weet ik ook dat je een plugin hebt voor Filemaker met PHP (FX.php) maar deze wil ik niet gebruiken omdat je dan ranzige queries met XML moet gaan geven.
Wellicht ten overvloede, maar de specs van mijn machine:
PIV 2,8 GHz
1 GB RAM
WinXP SP2
Ook heb ik het getest met een externe Filemaker database, maar zowel lokaal als remote database is enorm traag. Daar lijkt het probleem dus niet direct in te zitten.
Kan iemand mij hiermee alsjeblieft helpen, want ik ben een beetje "out of options".
Ik moet op het moment voor mijn stage een web-applicatie maken, met als back-end een FileMaker 8 database. De kenners hoef ik vast niet uit te leggen dat dit geen SQL taal is.
Via een ODBC-koppeling kan je echter wel SQL-commando's op de database afvuren, dit werkt ook. Echter is de performance in combinatie met PHP zwaar belabberd: 0,2 seconde per veld van een record ongeveer. Om 10 records met 3 velden op te vragen ben je dus 6 seconde bezig. Dit neemt lineair toe, en is dus niet mogelijk op deze manier fatsoenlijk gebruik van te maken.
Nu ben ik adhv de taskmanager erachter gekomen dat Filemaker bij het opbouwen van de site heel even actief is, en het lijkt alsof hij in ongeveer een halve seconde de data gewoon heeft doorgegeven aan Apache of de ODBC engine. Vervolgens zit er een 4-5-tal seconde tussen zonder processor load maar met een enorm geratel van de hdd. Daarna gaat de load van Apache even omhoog en staat de pagina ineens voor je neus.
Het probleem doet zich zowel met IIS als met Apache voor. Ook PHP4 ipv 5 maakt geen verschil. Het lijkt alsof de ODBC engine (DataDirect 32-BIT SequeLink 5.5 (5.4 ook geprobeerd)) het enorm moeilijk heeft.
Filemaker spuugt zo ver ik weet XML uit, dus ik kan me voorstellen dat het een lastige vertaalslag is. Echter gaat importeren via dezelfde ODBC koppeling in Excel zonder enig probleem en super snel!
Is dit een bekend probleem, of weet iemand de oplossing?
Stukje code dat ik gebruik om te testen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| //connect to the database $connectionstring = odbc_connect("ODBCRemote", "user", "pass"); //SQL query $Query = "SELECT klant_naam, klant_achternaam, klant_straat FROM klant WHERE klant_naam = 'Pieter'"; //execute query $queryexe = odbc_do($connectionstring, $Query); //output results to standard output odbc_result_all($queryexe, "BORDER=1"); $insert = "INSERT INTO klant (klant_id, klant_naam, klant_tussenv, klant_achternaam, klant_straat, klant_huisnr, klant_postcode, klant_plaats) VALUES ('15', 'Pieter', '', 'xxx', 'xxx', 'x', 'xxx', 'xxx')"; $queryins = odbc_do($connectionstring, $insert); //disconnect from database odbc_close($connectionstring); |
Zoals je ziet zit er helemaal op het eind ook nog een insert query: deze is er slechts om de performance te testen. Deze is namelijk wel super snel.
Nu weet ik ook dat je een plugin hebt voor Filemaker met PHP (FX.php) maar deze wil ik niet gebruiken omdat je dan ranzige queries met XML moet gaan geven.
Wellicht ten overvloede, maar de specs van mijn machine:
PIV 2,8 GHz
1 GB RAM
WinXP SP2
Ook heb ik het getest met een externe Filemaker database, maar zowel lokaal als remote database is enorm traag. Daar lijkt het probleem dus niet direct in te zitten.
Kan iemand mij hiermee alsjeblieft helpen, want ik ben een beetje "out of options".
[ Voor 5% gewijzigd door Plague op 01-02-2006 14:07 ]