[IIS] Sessie data stroomt vol
Ik heb een Windows SBS 2003 (Server 2003) met IIS staan. Daarop draait PHP. PHP schrijft in C:\Windows\temp de sessie data weg. Tot zover geen probleem.
Na een tijdje echter loopt het geheel vol door honderden oude sessies. PHP gaat dan foutmeldingen geven en kan sessies niet meer wegschrijven. Heel vervelend.
Als ik alle sess_* troep weghaal uit de eerder genoemde directory werkt het allemaal weer. Daar zit het probleem, PHP ziet dat de sessie-map te groot wordt (zegt ook dat die geen schrijfruimte heeft, terwijl er nog etterlijke GB's leeg zijn) en schrijft de boel niet meer weg.
Daarom zou ik graag willen dat oude sessies verwijderd worden. Op Linux gebeurt dat volgens mij automatisch, want een dergelijke fout ben ik nog nooit eerder op een van mijn andere webservers tegengekomen. Maar is zoiets nou een fout in PHP.ini (denk het niet, maar oké), of draait Linux hiervoor een cron ofzo?
Kan iemand mij dat vertellen, of kan iemand mij vertellen hoe ze de bovenstaande situatie op een IIS server hebben opgelost?
Elwin
[Edit: Typo]
Na een tijdje echter loopt het geheel vol door honderden oude sessies. PHP gaat dan foutmeldingen geven en kan sessies niet meer wegschrijven. Heel vervelend.
Als ik alle sess_* troep weghaal uit de eerder genoemde directory werkt het allemaal weer. Daar zit het probleem, PHP ziet dat de sessie-map te groot wordt (zegt ook dat die geen schrijfruimte heeft, terwijl er nog etterlijke GB's leeg zijn) en schrijft de boel niet meer weg.
Daarom zou ik graag willen dat oude sessies verwijderd worden. Op Linux gebeurt dat volgens mij automatisch, want een dergelijke fout ben ik nog nooit eerder op een van mijn andere webservers tegengekomen. Maar is zoiets nou een fout in PHP.ini (denk het niet, maar oké), of draait Linux hiervoor een cron ofzo?
Kan iemand mij dat vertellen, of kan iemand mij vertellen hoe ze de bovenstaande situatie op een IIS server hebben opgelost?
Elwin
[Edit: Typo]
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
Gesponsorde koppelingen:
PHP hóórt dit ook automatisch te doen, via de gc_* instelling (garbagecleaner), is er soms gerommeld gc_maxlifetime, via die instelling bepaald de garbage-cleaner nl. of sessiedata mag worden opgeruimt. Heeft het webserverproces, meestal IUSR_machinenaam o.i.d. wel volledige toegang tot die map (dus ook verwijderen?)
Er is nergens mee gerommeld in de PHP.ini. De session.gc_maxlifetime staat op 1440. Maar ik denk dat het wel eens het tweede kan zijn. Ik heb de IUSR_nogwat gebruiker rechten gegeven op C:\windows\temp.
Rare is dan wel dat die er naar toe mag schrijven (sessies lopen goed), maar niet mag verwijderen...
Ik kijk het even aan. :)
Edit:
Bedankt voor je antwoord... :)
Elwin
Rare is dan wel dat die er naar toe mag schrijven (sessies lopen goed), maar niet mag verwijderen...
Ik kijk het even aan. :)
Edit:
Bedankt voor je antwoord... :)
Elwin
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
Is het ook echt de standaardmap waar sessies naartoe worden geschreven? M.a.w. staat het pad ook in de php.ini opgegeven? Je kunbt in een php-script deze instelling namelijk overrulen via het session-save-path, dat werkt best leuk maar de GC zal nooit in dat pad komen om op te ruimen.
Succes ermee :)
Succes ermee :)
In het PHP-script is niets veranderd met ini_set ofzo. Maar goed.. we wachten af. Bedankt zover... :)
Elwin
Elwin
http://www.windowsitpro.com/WindowsScripting/Article/ArticleID/44891/44891.html
Mocht het niet werken is hier een windows scriptje om automatisch oude bestanden te verwijderen.
Mocht het niet werken is hier een windows scriptje om automatisch oude bestanden te verwijderen.
Hee.. Bedankt. Goede alternatieve oplossing.. :)
Elwin
Elwin
Wat misschien een andere optie is om sessies via een database te stoppen.
Vreemd genoeg kan ik er zo gauw geen vinden voor php. Voor perl stop ik al jaren mijn sessies in een database (mysql/postgre). Is relatief makkelijk om met een sql query oude sessies te verwijderen.
Vreemd genoeg kan ik er zo gauw geen vinden voor php. Voor perl stop ik al jaren mijn sessies in een database (mysql/postgre). Is relatief makkelijk om met een sql query oude sessies te verwijderen.



