Ik zit met een probleem. Ik moet bij het afsluiten van mijn browser of bij het veranderen naar een andere pagina een php pagina uitvoeren. Dit doe ik a.d.h.v. een ajax_do. Nu is het zo dat hij dit soms doet en soms ook niet. Dus soms voert hij het script uit maar 1/5 keren doet hij het niet. Hoe kan ik dit eventueel oplossen?
Neen het is een locking systeem dus wanneer een bepaald iets gewijzigd wordt moet het gesloten worden voor andere users en wanneer men dan uit de pagina gaat moet dat script altijd worden uitgevoerd op gelijk welken pagina en ook moet bij het sluiten van de browser het scriptje worden uitgevoerd
dit zet ik in de body:
onbeforeunload="close();" onunload="close();"
---- dit is de javascript vandiezelfde pagina ------
<?php include('inc_connect.php');
$id = $_GET['id'] ;
$query= "UPDATE requirements SET req_opened='0' WHERE req_id='".$id."'";
mysql_query($query) or die (mysql_error());
?>
dan breek je alle andere bewerkingen af die normaal uitgeoverd worden. dan kun je net even wat makkelijker debuggen (kijken welke waarde terug wordt gegeven bijvoorbeeld.)
wat ik doe in mijn CMS is gewoon het document laten unloacken bij het opslaan of sluiten via de web interface. als men de borwser (of het tabblad) sluit word het document niet geunlocked. Dat is geen probleem want de persoon die hem heeft gelock kan nog gewoon toegang krijgen.
Je kunt mijn code van google code af halen. source code
Je kan ook de pagina iedere 30 seconden o.i.d. een melding laten doen dat het bestand nog steeds gelockt moet zijn. Bij die requests update je dan een regel in je database met de huidige datum/tijd. Is die datum/tijd meer dan 60 seconden geleden, dan wordt het document op dat moment blijkbaar niet bewerkt, en is het geünlockt.
Je kan ook de pagina iedere 30 seconden o.i.d. een melding laten doen dat het bestand nog steeds gelockt moet zijn. Bij die requests update je dan een regel in je database met de huidige datum/tijd. Is die datum/tijd meer dan 60 seconden geleden, dan wordt het document op dat moment blijkbaar niet bewerkt, en is het geünlockt.
Is niet handig. Dat creëert enorm veel server load, zeker met meer gebruikers.
Is niet handig. Dat creëert enorm veel server load, zeker met meer gebruikers.
Apache en PHP hebben er niet zoveel problemen mee, grootste zorg is al de UPDATE queries die MySQL moet verwerken. Op een server waar ik deze methode gebruik was dat het probleem, en ik heb het opgelost door een daemon in PHP te schrijven (ja, het kan echt! :P) en dat lijkt erg goed te werken. Gemiddeld handelt hij 100 gebruikers tegelijkertijd (met 10 of minder seconden interval) af en dat is geen enkel probleem.