Voor een script dat een directory uitleest wil ik de bestanden in een sessie-array plaatsen, zodat niet steeds opnieuw de directory hoeft te worden uitgelezen.
Het idee is vrij simpel: ik plaats de bestanden van een bepaalde directory in een array. Die array wordt als geheel weer in een array geplaatst, met als key het realpath van de map die opgeroepen is. Die laatste array is de sessie-array.
Wanneer nu deze sessie-array al de key met het realpath bevat, hoeft niet opnieuw de directory doorlopen te worden. Het script doet hier nu bij een stuk of 20 bestanden al merkbaar even over.
Het maffe is dat het nu niet werkt. De simpele test hiervoor is print_r zowel voor al na het uitlezen; hieruit volgt dat de sessie-variabele domweg niet onthouden is.
Is er soms een beperking aan het opnemen van arrays in sessions??
Het idee is vrij simpel: ik plaats de bestanden van een bepaalde directory in een array. Die array wordt als geheel weer in een array geplaatst, met als key het realpath van de map die opgeroepen is. Die laatste array is de sessie-array.
Wanneer nu deze sessie-array al de key met het realpath bevat, hoeft niet opnieuw de directory doorlopen te worden. Het script doet hier nu bij een stuk of 20 bestanden al merkbaar even over.
Het maffe is dat het nu niet werkt. De simpele test hiervoor is print_r zowel voor al na het uitlezen; hieruit volgt dat de sessie-variabele domweg niet onthouden is.
Is er soms een beperking aan het opnemen van arrays in sessions??
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| //mbv realpath een sleutel voor arrays instellen $echte_dir_sleutel = realpath ($startdirectory); //huidige inhoud $_SESSION['echte_dir'] echo "<hr />"; print_r($_SESSION['echte_dir']); echo "<hr />"; //eerst alle directories onder de huidige directory in de array 'directories' zetten if (!array_key_exists($echte_dir_sleutel,$_SESSION['echte_dir'])) { //if (!isset($_SESSION['directories'])) { $diroverzicht = array(); //$_SESSION['directories'] = array(); if ($handle = opendir($startdirectory)) { while (false !== ($file = readdir($handle))) { if ($file <> "." and $file <>".." and is_dir($startdirectory.$file)) {array_push ($diroverzicht,$file); } } } $_SESSION['echte_dir'][$echte_dir_sleutel] = $diroverzicht; } //huidige inhoud $_SESSION['echte_dir']; echo "<hr />"; print_r($_SESSION['echte_dir']); echo "<hr />"; |