Un chti bout de php siou plé
18 messages
• Page 1 sur 2 • 1, 2
-

Zecat - WRInaute accro

- Messages: 11992
- Inscription: 1 Mar 2005
Un chti bout de php siou plé
Hello les php codeurs,
Juste un petit blème tout simple (mais vu mon niveau en php, ca devient une montagne). Voila, j'ai un petit script "compteur.php" qui me compte le nombre de connectés sur un site en utilisant un petit fichier "compteur.txt".
A la sortie j'ai la variable $onlinecount qui contient le nombre et je l'affiche ou je veux.
J'aimerais ajouter les quelques lignes qui vont faire cela :
Voila c'est tout bébête (à la sortie je peux utiliser mes 3 variables dans tous les cas (record battu ou pas). Pour me simplifier la lecture, ca serait bien de rajouter ca à la fin du script actuel et pas de le noyer au millieu. ki ki peut me faire ca sur un coin de table ?
Juste un petit blème tout simple (mais vu mon niveau en php, ca devient une montagne). Voila, j'ai un petit script "compteur.php" qui me compte le nombre de connectés sur un site en utilisant un petit fichier "compteur.txt".
- Code: Tout sélectionner
<?php
function isBots()
{
$bots=array('72.14.192'=>1, '72.14.192'=>1, '66.249.72'=>1, '66.249.66'=>1, '66.249.65'=>1,
'64.233.173'=>1, '216.239.58'=>1, '65.55.246'=>1, '65.55.235'=>1, '65.54.188'=>1, '64.4.8'=>1,
'207.68.157'=>1, '207.68.146'=>1, '207.46.98'=>1, '207.46.98'=>1, '72.30.99'=>1, '72.30.98'=>1,
'72.30.97'=>1, '72.30.61'=>1, '72.30.252'=>1, '72.30.226'=>1, '72.30.221'=>1, '72.30.216'=>1,
'72.30.215'=>1, '72.30.214'=>1, '72.30.177'=>1, '72.30.135'=>1, '72.30.134'=>1, '72.30.133'=>1,
'72.30.132'=>1, '72.30.131'=>1, '72.30.129'=>1, '72.30.128'=>1, '72.30.111'=>1, '72.30.110'=>1,
'72.30.107'=>1, '72.30.104'=>1, '72.30.103'=>1, '72.30.102'=>1, '72.30.101'=>1, '68.142.251'=>1,
'68.142.250'=>1, '68.142.249'=>1, '68.142.212'=>1, '66.94.238'=>1, '66.94.237'=>1, '66.94.232'=>1,
'66.196.91'=>1, '66.196.65'=>1, '213.251.136'=>1, '194.3.104'=>1, '190.57.10'=>1, '140.94.82'=>1,
'193.252.148'=>1, '193.252.118'=>1, '64.233.182'=>1);
$shortip = explode(".",$_SERVER['REMOTE_ADDR']);
array_pop($shortip);
$shortip = implode(".",$shortip);
if (isset($bots[$shortip])) return true;
return false;
}
if (!file_exists($_SERVER['DOCUMENT_ROOT']."/".$dossier_compteur."/compteur.txt")) $compteur_live = array();
else $compteur_live = file($_SERVER['DOCUMENT_ROOT']."/".$dossier_compteur."/compteur.txt");
$premiere_ligne_a_garder=-2;
do $premiere_ligne_a_garder=$premiere_ligne_a_garder+2;
while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
if(isset($_SERVER["REMOTE_ADDR"])) $ip_en_cours = $_SERVER["REMOTE_ADDR"];
else $ip_en_cours = "Non identifiable";
$compteur = "";
$onlinecount = 0;
if($premiere_ligne_a_garder < count($compteur_live))
{
for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2)
{
if(trim($compteur_live[$i+1]) != $ip_en_cours)
{
$compteur .= trim($compteur_live[$i])."\n".trim($compteur_live[$i+1])."\n";
$onlinecount++;
}
}
}
if (!isBots())
{
$compteur .= date('U')."\n".$ip_en_cours;
$onlinecount++;
}
$pointeur=fopen($_SERVER['DOCUMENT_ROOT']."/".$dossier_compteur."/compteur.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);
echo $onlinecount;
?>
A la sortie j'ai la variable $onlinecount qui contient le nombre et je l'affiche ou je veux.
J'aimerais ajouter les quelques lignes qui vont faire cela :
- Code: Tout sélectionner
1 - ouvrir un fichier "record.txt" (on part du principe qu'il existe)
2 - lire son contenu (un nombre sur la premiere ligne, une date sur la seconde ligne, une heure sur la troisieme ligne)
3 - ranger les infos dans $onlinerecord; $daterecord; $heurerecord
si($onlinecount > onlinerecord)
- mettre a jour records.txt avec nombre, date et heure
- ranger les nouvelles infos dans $onlinerecord; $daterecord; $heurerecord
fin de si
Voila c'est tout bébête (à la sortie je peux utiliser mes 3 variables dans tous les cas (record battu ou pas). Pour me simplifier la lecture, ca serait bien de rajouter ca à la fin du script actuel et pas de le noyer au millieu. ki ki peut me faire ca sur un coin de table ?
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: Un chti bout de php siou plé
Un truc comme ça (y a peut-être un coquille, j'ai pas testé) ?
- Code: Tout sélectionner
$online_count = '500000'; // on peut rêver
$filename = 'records.txt';
// ouvre le fichier et récupère les infos
$filecontent = file_get_contents($filename);
list($onlinerecord, $daterecord, $heurerecord) = explode("\n", $filecontent);
if( $onlinecount>$onlinerecord )
{
// on met à jour le fichier
$new_content = $onlinecount ."\n" .date('Y-m-d') ."\n". date('H:i');
file_put_contents($filename, $new_content);
}
-

Zecat - WRInaute accro

- Messages: 11992
- Inscription: 1 Mar 2005
Re: Un chti bout de php siou plé
ca coince sur cette ligne :
avec ce message :
puis sur
- Code: Tout sélectionner
$filecontent = file_get_contents($filename);
avec ce message :
- Code: Tout sélectionner
Warning: file_get_contents(records.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /vhosts/a/z/azsante/www/compteur/compteur.php on line 61
puis sur
- Code: Tout sélectionner
file_put_contents($filename, $new_content);
- Code: Tout sélectionner
Fatal error: Call to undefined function: file_put_contents() in /vhosts/a/z/azsante/www/compteur/compteur.php on line 68
-

Zecat - WRInaute accro

- Messages: 11992
- Inscription: 1 Mar 2005
Re: Un chti bout de php siou plé
Peut etre dois je mettre :
comme c'est le cas dans le script actuel
Bon je test. Ben non. si je fais ca j'ai :
Fatal error: Call to undefined function: file_put_contents() in /vhosts/a/z/azsante/www/compteur/compteur.php on line 68
- Code: Tout sélectionner
$_SERVER['DOCUMENT_ROOT']."/".$dossier_compteur."/records.txt"
comme c'est le cas dans le script actuel
Bon je test. Ben non. si je fais ca j'ai :
Fatal error: Call to undefined function: file_put_contents() in /vhosts/a/z/azsante/www/compteur/compteur.php on line 68
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: Un chti bout de php siou plé
oui, tu dois mettre le bon chemin vers le fichier (et le créer si nécessaire).
pour l'erreur file_put_contents(), je viens de voir que c'est dispo à partir de php5.
Si tu n'as pas la possibilité de passer en php5, tu peux "créer" la fonction file_put_contents() comme expliqué là :
http://fr.php.net/manual/fr/function.file-put-contents.php#86864
pour l'erreur file_put_contents(), je viens de voir que c'est dispo à partir de php5.
Si tu n'as pas la possibilité de passer en php5, tu peux "créer" la fonction file_put_contents() comme expliqué là :
http://fr.php.net/manual/fr/function.file-put-contents.php#86864
- Code: Tout sélectionner
if (!function_exists('file_put_contents')) {
function file_put_contents($filename, $data) {
$f = @fopen($filename, 'w');
if (!$f) {
return false;
} else {
$bytes = fwrite($f, $data);
fclose($f);
return $bytes;
}
}
}
-

seebz - WRInaute impliqué

- Messages: 808
- Inscription: 15 Avr 2007
Re: Un chti bout de php siou plé
Zecat a écrit:on peut pas mettre le bon code direct dans le script sans faire de fonctions
Si, ca deviendrait un truc comme ça :
- Code: Tout sélectionner
$online_count = '500000'; // on peut rêver
$filename = $_SERVER['DOCUMENT_ROOT'].'/'.$dossier_compteur.'/records.txt';
// ouvre le fichier et récupère les infos
$filecontent = file_get_contents($filename);
list($onlinerecord, $daterecord, $heurerecord) = explode("\n", $filecontent);
if( $onlinecount>$onlinerecord )
{
// on met à jour le fichier
$new_content = $onlinecount ."\n" .date('Y-m-d') ."\n". date('H:i');
$f = @fopen($filename, 'w');
fwrite($f, new_content);
fclose($f);
}
-

Zecat - WRInaute accro

- Messages: 11992
- Inscription: 1 Mar 2005
Re: Un chti bout de php siou plé
Juste une petite question par pure curiosité intellectuelle. la meme chose mais dans une base mysql :
- accès à la base
- lecture enregistrement
- mise à jour
- reécriture enregistrement
en terme de :
- vitesse
- consommation ressources sur le serveur
par rapport à la démarche "petit fichier.txt", ca donne quoi ? quif quif, 10 fois plus pour l'un ? Juste pour savoir si je vais pas écrouler mon mutu
- accès à la base
- lecture enregistrement
- mise à jour
- reécriture enregistrement
en terme de :
- vitesse
- consommation ressources sur le serveur
par rapport à la démarche "petit fichier.txt", ca donne quoi ? quif quif, 10 fois plus pour l'un ? Juste pour savoir si je vais pas écrouler mon mutu
Dernière édition par Zecat le Ven Jan 15, 2010 13:03, édité 1 fois.
-

Zecat - WRInaute accro

- Messages: 11992
- Inscription: 1 Mar 2005
Re: Un chti bout de php siou plé
ou un forum d'entraide ... entre ceux
qui savent et ceux qui ne savent pas ... 
D'ailleurs ce forum "developpement de site web" me semble tout à fait adapté à cela entre autres non ? Et je préfère demander ici ou je connais du monde que sur un forum lamda sur php ou je connais personne.
D'ailleurs ce forum "developpement de site web" me semble tout à fait adapté à cela entre autres non ? Et je préfère demander ici ou je connais du monde que sur un forum lamda sur php ou je connais personne.
18 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Spamassasin : un petit resumé siou plé
- empécher l'ajout d'un fichier php au bout d'une url php
- Remplacer un bout de chaine php
- PHP > Besoin d'aide pour un bout de code
- [Resolu]Question sur un bout de code php, merci...
- CHti pb d'heure sur le forum
- [V2] Chti Sportif : sports nature dans le Nord
- Y'aurait pas un chti bug en page accueil
- Chti cadeau : detection temsp réel nouveaux visiteurs
- Les deux échelles du PageRank - 10-08-2004
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

