Ok dan,
Ik heb de volgende situatie:
1 Linux server(SuSE 8.0)
Apache 1.3(laatste versie, niet 2.0)
Mod_ssl(ook laatste versie)
MySQL(je raad het al, ook de laatste versie)
PHP(en ja, ook de laatste versie)
1 PHP script, met het volgende(heb ik op een grote php site gevonden, let op dit werkt goed onder HTTP, alleen HTTPS geeft problemen):
Connectie naar MySQL is aanwezig. De grap is: dit werkt. Althans, onder HTTP! Zodra ik overschakel naar HTTPS, en in mijn code staat:
dan crashed apache(met de melding in de logs: '[notice] child pid 2670 exit signal Segmentation fault (11)') en krijgt de gebruiker van de website een 'Page cannot be displayed'. Nou, niet helemaal waar. Hij crashed AF EN TOE. Ongeveer 7 op de 10 keer gaat het goed. Maar dit is afhankelijk van de windrichting of zo, want zo gaat het 20x goed, en zo 2x goed voordat er een crash is.
Op het moment dat ik de sessies niet in een MySQL database laat opslaan, dus de bovenstaande code compleet weghaal waardoor sessies op schijf worden opgeslagen(in mij geval in de /tmp directory) gaat het perfect! Vanwege wat hoge load op de server op sommige momenten, leek mij MySQL een betere en snellere oplossing. Maar met een crashende apache is dit natuurlijk niet handig.
Iemand enig idee wat hier het probleem is???
En ook al is het zo dat de op schijf opslaan variant sneller en beter is, dan nog ben ik erg benieuwd naar een oplossing/oorzaak van dit probleem
edit: was PHP boven in het lijstje vergeten...
Ik heb de volgende situatie:
1 Linux server(SuSE 8.0)
Apache 1.3(laatste versie, niet 2.0)
Mod_ssl(ook laatste versie)
MySQL(je raad het al, ook de laatste versie)
PHP(en ja, ook de laatste versie)
1 PHP script, met het volgende(heb ik op een grote php site gevonden, let op dit werkt goed onder HTTP, alleen HTTPS geeft problemen):
PHP:
1
| <? /* * CREATE TABLE sessions ( * sesskey char(32) not null, * expiry int(11) unsigned not null, * value text not null, * PRIMARY KEY (sesskey) * ); * --------------------------------------------------------------------------------------- * Include this file in your scripts before you call session_start(), you * don't have to do anything special after that. */$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");function sess_open($save_path, $session_name) { return true;}function sess_close() { return true;}function sess_read($key) { global $SESS_LIFE; $qry = "SELECT value FROM Sessions WHERE sesskey = '$key' AND expiry > " . time(); $qid = mysql_query($qry); if (list($value) = mysql_fetch_row($qid)) { return $value; } return false;}function sess_write($key, $val) { global $SESS_LIFE; $expiry = time() + $SESS_LIFE; $value = addslashes($val); $qry = "INSERT INTO Sessions VALUES ('$key', $expiry, '$value')"; $qid = mysql_query($qry); if (! $qid) { $qry = "UPDATE Sessions SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " . time(); $qid = mysql_query($qry); } return $qid;}function sess_destroy($key) { $qry = "DELETE FROM Sessions WHERE sesskey = '$key'"; $qid = mysql_query($qry); return $qid;}function sess_gc($maxlifetime) { $qry = "DELETE FROM Sessions WHERE expiry < " . time(); $qid = mysql_query($qry); return mysql_affected_rows();}session_set_save_handler( "sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");?> |
Connectie naar MySQL is aanwezig. De grap is: dit werkt. Althans, onder HTTP! Zodra ik overschakel naar HTTPS, en in mijn code staat:
PHP:
1
| <?session_register("eenvariabel");?> |
dan crashed apache(met de melding in de logs: '[notice] child pid 2670 exit signal Segmentation fault (11)') en krijgt de gebruiker van de website een 'Page cannot be displayed'. Nou, niet helemaal waar. Hij crashed AF EN TOE. Ongeveer 7 op de 10 keer gaat het goed. Maar dit is afhankelijk van de windrichting of zo, want zo gaat het 20x goed, en zo 2x goed voordat er een crash is.
Op het moment dat ik de sessies niet in een MySQL database laat opslaan, dus de bovenstaande code compleet weghaal waardoor sessies op schijf worden opgeslagen(in mij geval in de /tmp directory) gaat het perfect! Vanwege wat hoge load op de server op sommige momenten, leek mij MySQL een betere en snellere oplossing. Maar met een crashende apache is dit natuurlijk niet handig.
Iemand enig idee wat hier het probleem is???
En ook al is het zo dat de op schijf opslaan variant sneller en beter is, dan nog ben ik erg benieuwd naar een oplossing/oorzaak van dit probleem
edit: was PHP boven in het lijstje vergeten...
Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua