Auto Refresh

Status
Niet open voor verdere reacties.
Is dat niet net zo zwaar als wanneer in elke 10 seconden een call naar de database doe?
 
Nop. Filetje lezen gaat veel sneller dan verbinding maken met de database en een query doen.
 
Ok. Ik ga het binnenkort proberen. Bedankt voor je hulp!:thumb:
 
Ok. Heb het nu geprobeerd, maar ik kom er echt niet uit.

Volgens mij moet het ook makkelijker kunnen dan wat ik nu doe.

Ik heb 2 rand files (rand.txt en rand1.txt).

test1.php gaat in rand.txt dezelfde waarde zetten als in rand1.txt.

test.php gaat een database-aanroep doen als rand.txt anders is als rand1.txt.

Alleen... het werkt niet.

Dit is mijn code:

test.php
PHP:
<script>
function updater() {
	<?php
	if(file_get_contents('rand.txt') == file_get_contents('rand1.txt')) {
		$con = mysql_connect('localhost', '123', '456');
		mysql_select_db('123');

		$query = mysql_query('SELECT * FROM 456');

		while($row = mysql_fetch_array($query)) {
			echo "document.write('<p>$row[11] - $row[33]');";
		}
		file_put_contents('rand.txt', 'succeded!');
	}
	?>
}

setInterval( "updater()", 1000 );
</script>

test1.php
PHP:
<?php
$rand = md5(rand());

$con = mysql_connect('localhost', '123', '456');
mysql_select_db('123');

$query = mysql_query('SELECT * FROM 456');

file_put_contents('rand.txt', $rand);
file_put_contents('rand1.txt', $rand);

?>

Wat doe ik hier fout?
 
Ik ben er nu achter dat ik een fout heb gemaakt in de code. Ik heb namelijk php server-side in een js-function gezet, en wilde dat hij dat iedere 10 sec server-sided code ging uitvoeren. Dat kan natuurlijk niet.

Maar... hoe moet dit dan wel? Weet iemand dit?
 
Je functie "updater" moet een AJAX-call maken naar een PHP-bestandje.

Via jQuery is het zo geregeld, maar jQuery lijkt mij iets te extreem voor enkel deze functie :)

Kijk dus even hoe je via JS een XMLHttpRequest kunt maken ;)
 
(was hier laasts niet een soortgelijk topic over? SMS-wall iets?)


Zie eens hier voor een cross-browser geen-jsLib XMLHttpRequest voorbeeld. In plaats van de call naar het text-bestandje maak je de call naar het php file, en verander je de tijd naar 10000 ms. (10 secondes)



:thumb:
 
Laatst bewerkt:
Oke, en hoe laat ik PHP dan controleren of het textbestand veranderd is?
 
Niemand enig idee? Ik heb in een paar posts terug een code geplaatst, maar ik heb toch het idee dat die code veel makkelijker kan.
 
Of je laat een leeg txt bestand in een bepaalde folder schrijven die alleen voor dat bestand bestemd is.
En vervolgend laat je php een txt bestand schrijven waarvan de naam een uniekID is als de database veranderd is.
en het andere bestand verwijderen.
Dan hoeft php het bestand niet te laden en te verwerken.

Is zomaar een ideetje die ik kreeg toe ik de post las.
Ik weet niet en heb geen ervaring of dit ook zal werken.
en of het een verstandige manier is!
 
Ik snap niet helemaal wat je bedoelt, maar jullie hebben mij denk ik wel op het juiste spoor gezet. Nu moet het wel een beetje lukken denk ik.

Bedankt voor jullie hulp!
 
gewoon, ipv het bestand aanpassen, pas je de bestandsnaam aan.
Op die manier hoef je alleen maar te kijken of het bestand dat gevonden is tijdens het openen van de pagina
nog bestaat op de server.
Is dat bestand er niet meer,dan is de database aangepast en moet de pagina herladen worden en de nieuw filename opgeslagen worden.
 
Oke, ik heb nu dit:

request.php
PHP:
<?php
if(file_get_contents('./checker.txt') != "Refreshed") { //als de waarde van het bestand NIET 'Refreshed' is.
	echo "Bestand is vernieuwd!";
	file_put_contents('./checker.txt', 'Refreshed'); //waarde op 'Refreshed' zetten.
}
?>

weergeven.php
[JS]<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>

<script>
$(function() {

function loadData() {
$('#dvi').load('request.php');
}
setInterval(loadData, 3000);
});
</script>

<div id="dvi">Laden...</div>[/JS]

Ik vond het makkelijker om de waarde van het bestand uit te lezen, ipv de bestandsnaam te wijzigen.

Maar.... als ik nu het bestand checker.txt een andere waarde dan 'Refreshed' geef, dan laat hij dit maar 3 seconden zien in weergeven.php. Ik weet dat dit komt omdat request.php de waarde op 'Refreshed' zet, en weergeven.php iedere 3 seconden request.php laadt, maar hoe kan ik het de waarde uit request.php laten staan?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan