gordon2008
04-01-2011, 08:42
Salve a tutti!
Mi sono avvicinato autodidatticamente al linguaggio PHP e ho programmato una piccola chat in cui i messaggi vengono salvati in un file di testo e visualizati da uno script che ne legge solo gli ultimi 15. Al momento la pagina che visualizza gli interventi si aggiorna automaticamente tramite un meta tag ogni 3 secondi. Volevo provare a fare in modo che si aggiornasse solo quando c'è un nuovo messaggio. Per fare ciò ho fatto in modo che ogni volta che viene inviato un nuovo messaggio, viene incrementato un contatore contenuto in un file; a questo punto uno script dovrebbe controllare che il contenuto del file del contatore di nuovi messaggi, sia maggiore del contenuto di un altro file, che contiene il valore del contatore dell'ultimo messaggio. Ho fatto così ('new.chat' è il file in cui è contenuto il contatore dei nuovi messaggi, mentre 'last.chat' è il file in cui c'è il valore del contatore dell'ultimo messaggio):
<?php
$lastf=fopen('last.chat', 'w+');
$newf=fopen('new.chat', 'w+');
$last=file_get_contents('last.chat');
$new=file_get_contents('new.chat');
do{
}
while($last<=$new);
if($new>$last)
{
fwrite($lastf, date(YmdHis));//aggiorna il valore del contatore dell'ultimo messaggio
echo "<script type=\"text/javascript\">document.getElementById('view').src='view.php#last';</script>";//reindirizza un iframe alla pagina dove vengono visualizzati i messaggi alla posizione dell'ultimo messaggio
}
fclose($lastf);
fclose($newf);
?>
<html>
<head>
<meta http-equiv="Refresh" content="1 url=refresh.php"/>
</head>
</html>
Carico il tutto su altervista, ma dopo 30 secondi, come sospettavo, appare scritto che appunto il limite di esecuzione di 30 secondi è stato superato. Avete qualche idea?
Grazie in anticipo per:
1) Leggere
2) Provare a capire qualcosa (nel mio mondo immaginario dovrei essere stato abbastanza chiaro :))
3) Eventualmente rispondere :)
Mi sono avvicinato autodidatticamente al linguaggio PHP e ho programmato una piccola chat in cui i messaggi vengono salvati in un file di testo e visualizati da uno script che ne legge solo gli ultimi 15. Al momento la pagina che visualizza gli interventi si aggiorna automaticamente tramite un meta tag ogni 3 secondi. Volevo provare a fare in modo che si aggiornasse solo quando c'è un nuovo messaggio. Per fare ciò ho fatto in modo che ogni volta che viene inviato un nuovo messaggio, viene incrementato un contatore contenuto in un file; a questo punto uno script dovrebbe controllare che il contenuto del file del contatore di nuovi messaggi, sia maggiore del contenuto di un altro file, che contiene il valore del contatore dell'ultimo messaggio. Ho fatto così ('new.chat' è il file in cui è contenuto il contatore dei nuovi messaggi, mentre 'last.chat' è il file in cui c'è il valore del contatore dell'ultimo messaggio):
<?php
$lastf=fopen('last.chat', 'w+');
$newf=fopen('new.chat', 'w+');
$last=file_get_contents('last.chat');
$new=file_get_contents('new.chat');
do{
}
while($last<=$new);
if($new>$last)
{
fwrite($lastf, date(YmdHis));//aggiorna il valore del contatore dell'ultimo messaggio
echo "<script type=\"text/javascript\">document.getElementById('view').src='view.php#last';</script>";//reindirizza un iframe alla pagina dove vengono visualizzati i messaggi alla posizione dell'ultimo messaggio
}
fclose($lastf);
fclose($newf);
?>
<html>
<head>
<meta http-equiv="Refresh" content="1 url=refresh.php"/>
</head>
</html>
Carico il tutto su altervista, ma dopo 30 secondi, come sospettavo, appare scritto che appunto il limite di esecuzione di 30 secondi è stato superato. Avete qualche idea?
Grazie in anticipo per:
1) Leggere
2) Provare a capire qualcosa (nel mio mondo immaginario dovrei essere stato abbastanza chiaro :))
3) Eventualmente rispondere :)