|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
COMPTEUR DE JOURS RESTANTS DANS LE TOPIC D'UN CHANNEL IRC (À ÉXÉCUTER AVEC CRON)
Information sur la source
Description
Ce script met à jour le topic d'un chan IRC à chaque appel. Il permet de gérer la maj d'un compte à rebours. La config se fait en haut du fichier. Le script a été fait pour se connecter à QuakeNet. Pour un autre réseau, vous risquez de devoir retoucher le protocole ainsi que de remplacer le système d'auth. Pour l'automatiser, vous devez appeler ce script depuis un démon cron on assimilé (ou http://www.webcron.org/) Les sleep(x) servent à ne pas se faire bannir du serveur IRC pour "Excess Flood" (trop de données à la suite). Le reste du topic est conservé ! Le script ne change que la partie "J-xxx" ou ne fait rien si cette partie n'existe pas.
Source
- <?php
-
- $user = "PhpPooler";
- $nick = "gdz|GodzilanBot";
- $chan = "#godzilan";
-
- $q_user = "QuakenetUser";
- $q_pass = "QuakenetPassword";
-
- // Godzilan 3: 26 octobre 2007
- $jour = 26;
- $mois = 10;
- $annee = 2007;
-
- // FIN CONFIG
-
- //euroserv.fr.quakenet.org:6667
- // Timeout de 15s
-
- if (!($fp = @fsockopen("euroserv.fr.quakenet.org", 6667, $errno, $errstr, 15)))
- {
- die("Connect failed.");
- }
-
- function vide_buffer($s)
- {
- $status["unread_bytes"] = 1;
- while($status["unread_bytes"])
- {
- fgetc($s);
- $status = socket_get_status($s);
- }
-
- }
-
- function cancel($s,$reason)
- {
- fputs($s, "QUIT :Abort\r\n");
- sleep(1);
- die("Operation cancelled: ".$reason);
- }
-
- sleep(1);
- vide_buffer($fp);
- fputs($fp, "NICK ".$user."\r\n");
- sleep(1);
- while(fread($fp, 5)!="PING ");
- $ping = trim(fread($fp, 11),"\r\n");
- sleep(1);
- fputs($fp, "PONG ".$ping."\r\n");
- sleep(1);
- fputs($fp, "USER ".$user." 0 0 :Elektordi's PHP Pooler\r\n");
- sleep(3);
- vide_buffer($fp);
- fputs($fp, "NICK ".$nick."\r\n");
- sleep(3);
- while(fread($fp, 1)!="~");
- vide_buffer($fp);
- fputs($fp, "TOPIC ".$chan."\r\n");
- sleep(1);
- $data=fread($fp, 1024);
- $p0 = strpos($data, "332");
- if($p0===FALSE) cancel($fp,"Can't get topic !");
-
- $p1 = strpos($data, ":",$p0);
- $p2 = strpos($data, "\n",$p1);
- $topic = rtrim(substr($data,$p1+1,$p2-$p1),"\r");
-
- $topic0 = $topic;
-
- $p1 = strpos($topic, "J-");
- if($p1===FALSE) cancel($fp,"No 'J-' in topic !");
-
- $p2 = strpos($topic, " ", $p1);
-
- // compte à rebours
- $le_jour = date("j");
- $le_mois = date("n");
- $l_annee = date("Y");
- $duree_restante=round((mktime(0, 0, 0, $le_mois, $le_jour, $l_annee)-mktime(0, 0, 0, $mois, $jour, $annee))/(24*60*60));
- if ($duree_restante<)
- {
- $decompte_affiche = "J".$duree_restante;
- }
- else $decompte_affiche = "* Jour J *";
-
- // affichage du compte à rebours
-
- $topic = substr_replace($topic,$decompte_affiche,$p1,$p2-$p1);
-
- if($topic==$topic0) cancel($fp,"Already up to date.");
-
- sleep(1);
- fputs($fp, "PRIVMSG Q@CServe.quakenet.org :AUTH ".$q_user." ".$q_pass."\r\n");
- sleep(1);
- fputs($fp, "JOIN ".$chan."\r\n");
- sleep(1);
- while(fread($fp, 2+strlen($nick))!="o ".$nick)
- {
- while(fread($fp, 1)!="+");
- }
- sleep(1);
- fputs($fp, "TOPIC ".$chan." :".$topic."\r\n");
- sleep(1);
- fputs($fp, "QUIT :Cron Job Done\r\n");
-
- echo "Topic changed to: ".$topic;
-
- ?>
<?php
$user = "PhpPooler";
$nick = "gdz|GodzilanBot";
$chan = "#godzilan";
$q_user = "QuakenetUser";
$q_pass = "QuakenetPassword";
// Godzilan 3: 26 octobre 2007
$jour = 26;
$mois = 10;
$annee = 2007;
// FIN CONFIG
//euroserv.fr.quakenet.org:6667
// Timeout de 15s
if (!($fp = @fsockopen("euroserv.fr.quakenet.org", 6667, $errno, $errstr, 15)))
{
die("Connect failed.");
}
function vide_buffer($s)
{
$status["unread_bytes"] = 1;
while($status["unread_bytes"])
{
fgetc($s);
$status = socket_get_status($s);
}
}
function cancel($s,$reason)
{
fputs($s, "QUIT :Abort\r\n");
sleep(1);
die("Operation cancelled: ".$reason);
}
sleep(1);
vide_buffer($fp);
fputs($fp, "NICK ".$user."\r\n");
sleep(1);
while(fread($fp, 5)!="PING ");
$ping = trim(fread($fp, 11),"\r\n");
sleep(1);
fputs($fp, "PONG ".$ping."\r\n");
sleep(1);
fputs($fp, "USER ".$user." 0 0 :Elektordi's PHP Pooler\r\n");
sleep(3);
vide_buffer($fp);
fputs($fp, "NICK ".$nick."\r\n");
sleep(3);
while(fread($fp, 1)!="~");
vide_buffer($fp);
fputs($fp, "TOPIC ".$chan."\r\n");
sleep(1);
$data=fread($fp, 1024);
$p0 = strpos($data, "332");
if($p0===FALSE) cancel($fp,"Can't get topic !");
$p1 = strpos($data, ":",$p0);
$p2 = strpos($data, "\n",$p1);
$topic = rtrim(substr($data,$p1+1,$p2-$p1),"\r");
$topic0 = $topic;
$p1 = strpos($topic, "J-");
if($p1===FALSE) cancel($fp,"No 'J-' in topic !");
$p2 = strpos($topic, " ", $p1);
// compte à rebours
$le_jour = date("j");
$le_mois = date("n");
$l_annee = date("Y");
$duree_restante=round((mktime(0, 0, 0, $le_mois, $le_jour, $l_annee)-mktime(0, 0, 0, $mois, $jour, $annee))/(24*60*60));
if ($duree_restante<)
{
$decompte_affiche = "J".$duree_restante;
}
else $decompte_affiche = "* Jour J *";
// affichage du compte à rebours
$topic = substr_replace($topic,$decompte_affiche,$p1,$p2-$p1);
if($topic==$topic0) cancel($fp,"Already up to date.");
sleep(1);
fputs($fp, "PRIVMSG Q@CServe.quakenet.org :AUTH ".$q_user." ".$q_pass."\r\n");
sleep(1);
fputs($fp, "JOIN ".$chan."\r\n");
sleep(1);
while(fread($fp, 2+strlen($nick))!="o ".$nick)
{
while(fread($fp, 1)!="+");
}
sleep(1);
fputs($fp, "TOPIC ".$chan." :".$topic."\r\n");
sleep(1);
fputs($fp, "QUIT :Cron Job Done\r\n");
echo "Topic changed to: ".$topic;
?>
Conclusion
Script codé en 2h chrono... (Cela explique le protocole "bourrin") Deux petits rappels avant que vous ne l'utilisiez: - Très peu d'hébergeurs gratuits ouvrent le port 6667 (ou autre) en sortie ! - Par défaut, un script php arrète de s'éxécuter au bout de 30 secs !
Historique
- 11 mars 2007 15:51:27 :
- Oubli dans la description
- 12 mars 2007 18:48:04 :
- Passage en entiers de la date, changement de la balise en <?php
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Compte à rebours... [ par The_magicien ]
Bonjour à tous! Je voudrais savoir si il était possible d'effectuer un compte à rebours en php (car je voudrais insérer des variab
Bonjour [ par r3frag ]
Bonjour a tousOu pourrai je trouver ( ou quelqu'un a t il ce script ) un script en PHP de compte a rebours sur une periode de 24 H ? puis remise a zer
Compte à rebours avec mysql [ par aurelie95 ]
Bonjour à tous,Je sollicite votre aide pour mon projet, j'explique :Je veux que que quand ma page temps.php est chargé, il rentre la date complète dan
Besoin d'aide, comparaison de temps [ par acidest ]
Bonjour, pour mon jeu en ligne je souhaiterai créer une banque, tout es prêt sauf un petit truc :Dès que l'on dépose des ressources (jeu style OGame..
Compt à rebours quotidien [ par habroc ]
Bonjour , Je galère depuis plusieurs jours ...Je cherche un script qui me permette de réaliser un compte à rebours en Heures , minutes , secondes jusq
MicroPaiements vs WHMCS [ par HuRRR ]
Bonjour à tous et à toutes. Je suis très heureux d'être désormais membre de cette communauté, car j'ai un petit soucis côté site web, et je compte bie
Nombre de jours écoulés [ par bidaya ]
Bonjour, je souhaiterais créer un mini-site d'une page qui donne en temps réel le nombre de jours écoulés entre une date (exemple 4 mars 2009) et le j
Mise à jours de champs mysql 1+0,1 depuis requête php [ par stella2809 ]
Bonjourvoici ma question :Je souhaiterais mettre à jours un champs de table MySql valeure actuelle + 0,1 et je bug :)champs mysql : <td al
Incrémenter ou décrémenter une variable mysql quotidiennement [ par cdie ]
Bonjour à tous, Je suis entrain de faire un site web et je fais face à un petit problème. Effectivement, j'aimerais que toute les 24h (donc une fois
reservation en temps réel [ par tiwtiwa11 ]
salut les amis(es) Je suis entrain de faire un projet en PHP/Mysql sur les réservations des riads je dois affecter à chaque chambre un calendrier
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|