Bertel Lund Hansen wrote:
> Jeg har også sat en sessiion i gang i starten og bruger
> session-variable for at de bliver husket mellem hvert kald. Det
> fungerer også.
>
> Men! ... hvis jeg prøver at læge filoplysningerne i en
> sessionvariabel, så går serveren i spåner og melder fejl
> 500-etellerandet.
>
> I princippet ser det sådan ud:
>
> <?
> session_start();
>
> if (!isset($_SESSION['filecontent'])) {
> $_SESSION['filecontent'] = explode("\n", file_get_contents(MEMBERFILENAME));
> while (strlen(end($_SESSION['filecontent']))<4) array_pop($filecontent); // Fjern tomme linjer
> $antal=count($_SESSION['filecontent']);
> }
En mulighed er at filen er stor. Det belaster serveren temmelig
voldsomt, hvis du f. eks. indlæser en fil på en megabyte i
sessionsobjektet. Prøv at lave en meget kort fil og se om det ændrer
noget. Generelt ser det ud som om at du er i gang med at bruge
sessionsobjektet til noget, det ikke er beregnet til. Det er ikke
meningen at man skal stoppe alle de ting, der ligger fremme på
skriveborden ned i sessionsobjektet, blot for at overføre det fra side
til side. Det tager for mange ressourcer.
> [en masse PHP- og HTML-kode ...]
>
> if (isset($vis)) {
> foreach ($_SESSION['filecontent'] as $dataline) {
> list ($nam,$mal,$yea,$brn,$liv,$zip,$hmp)=explode('!',$dataline);
> if ($name>'' ...
> if ($year>'' ...
> if ($born>'' ...
> if ($zipc>'' ...
> if ($live>'' ...
> $show=true;
> osv.
> }
> ?>
Jeg foreslår at du gemmer nogle heltal, der indikerer hvor i filen, du
er nået til. Så må du åbne filen hver gang, du skal vise en ny side. Det
er sådan man plejer at gøre.
> Jeg havde en tidligere version af programmet hvor jeg brugte
> samme metode, og jeg mente selv at jeg fik det til at virke, men
> da jeg skulle tjekke det i forbindelse med revisionen, virkede
> det heller ikke.
Det kan være fordi at du bruger en webserver, hvor php er konfigureret
til at afsætte mindre plads til hver session.
> Måske skal jeg bare læse mere om sessions, men måske er der en
> der lige kan komme med det rigtige indspark?
Det er det rigtige indspark. Læs om sessions
F. eks. kan session.use_only_cookies ødelægge det for dig, for så skal
php sende hele filen til klienten i en cookie. Det går nok galt.
http://dk.php.net/manual/en/ref.session.php
(Der er et hav af kommentarer, som muligvis kan bruges.)
Ellers vil jeg opfordre dig til at prøve disse ting:
- Mindre filer (som nævnt ovenfor)
- Stop samme data i sessionsobjektet, men lad være med at hente det
fra en fil.
Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at
http://michael.zedeler.dk/
Get my vcard at
http://michael.zedeler.dk/vcard.vcf