Ik heb een database van een stuk software van een klant. Hierin zitten processen beschreven met daarin verantwoordelijke functies en afdelingen. Ik heb in principe 4 tabellen in de DB staan (processen, afdelingen, functies en procesinformatie). Nu maak ik voor een klant verschillende paginas met overzichten:
- Boomstructuur van de processen (zit een boomstructuur in de tabel processen).
- Boomstructuur van de functies/afdelingen.
Het stukje PHP kijkt of een proces beschreven is, en of er een verantwoordelijke functie aan gekoppeld is etc., anders toont ie hem niet. Bij het afdelingsoverzicht kijkt ie of de betreffende afdeling wel functies onder zich heeft welke verantwoordelijk zijn voor processen etc.
Ik laad al de gegevens in in arrays zodat ik iets krijg in de trant van $processen[ID][Name], $processen[ID][Verantwoordelijk]....etc, zodat ik maar eenmalig de queries hoef uit te voeren.
Punt is nu dat als het om grote projecten gaat (>150 processen, >80 functies) dat ik dan gewoon timeout errors krijg in PHP bij de grote overzichten. Nu kan ik wel de timeout-tijd verlengen, maar dan duurt het gewoon té lang. Ik kan niet verwachten van mensen dat ze 60sec. zitten te wachten op een intranetpagina.
Hoe kan ik dit oplossen? Het punt is is dat ie gewoon vaak door die arrays moet lopen en als je bijvoorbeeld 100 functies heeft, moet ie sowieso 100x elk proces langs om te kijken of ie niet een keer benodigd is in een proces. En elk proces bestaat ook weer uit handelingen. Stel je hebt 100 functies, 100 processen met elk 10 handelingen.....dan krijg je 100 * 100 * 10 = 100000 checks. Dat is echt ietsje te veel.
Moet ik misschien eenmalig alles inlezen en dan static-pagina's bouwen of pregenerated output in xml-files pleuren?
- Boomstructuur van de processen (zit een boomstructuur in de tabel processen).
- Boomstructuur van de functies/afdelingen.
Het stukje PHP kijkt of een proces beschreven is, en of er een verantwoordelijke functie aan gekoppeld is etc., anders toont ie hem niet. Bij het afdelingsoverzicht kijkt ie of de betreffende afdeling wel functies onder zich heeft welke verantwoordelijk zijn voor processen etc.
Ik laad al de gegevens in in arrays zodat ik iets krijg in de trant van $processen[ID][Name], $processen[ID][Verantwoordelijk]....etc, zodat ik maar eenmalig de queries hoef uit te voeren.
Punt is nu dat als het om grote projecten gaat (>150 processen, >80 functies) dat ik dan gewoon timeout errors krijg in PHP bij de grote overzichten. Nu kan ik wel de timeout-tijd verlengen, maar dan duurt het gewoon té lang. Ik kan niet verwachten van mensen dat ze 60sec. zitten te wachten op een intranetpagina.
Hoe kan ik dit oplossen? Het punt is is dat ie gewoon vaak door die arrays moet lopen en als je bijvoorbeeld 100 functies heeft, moet ie sowieso 100x elk proces langs om te kijken of ie niet een keer benodigd is in een proces. En elk proces bestaat ook weer uit handelingen. Stel je hebt 100 functies, 100 processen met elk 10 handelingen.....dan krijg je 100 * 100 * 10 = 100000 checks. Dat is echt ietsje te veel.
Moet ik misschien eenmalig alles inlezen en dan static-pagina's bouwen of pregenerated output in xml-files pleuren?
Engineering is like Tetris. Succes disappears and errors accumulate.