login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP 'rehash'

Offline Oneday - 17/07/2011 13:03
Avatar van OnedayNieuw lid Hey ik vroeg me af waar het volgende mogelijk is:

Ik heb een IRC bot, hier maakt hij dus verbinding met IRC en blijft hij in een oneindig lange While.

Dan kan ik in 't script zeggen dat als iemand &ping zegt dat hij met 'pong!' antwoord. Nu, als ik wijzigingen aanbreng of een nieuw commando toevoeg moet ik nu telkens mijn bot van IRC halen en 'm opnieuw opstarten. Is er geen manier waardoor hij de commando's uit een andere .php file leest en deze, nadat ik wijzigingen aanbreng, gewoon opnieuw laad (mét aanpassingen dus). Zodat ik de bot niet telkens volledig moet herstarten maar bij wijze van spreken gewoon een 'reload' kan doen.

5 antwoorden

Gesponsorde links
Offline Stijn - 17/07/2011 13:41
Avatar van Stijn PHP expert Je kan idd de commando's in een aparte array/file ofzo bijhouden. Maar je moet een commando toevoegen die dan alles reload (!reload zoiets).

Als de bot volledig moet herstarten dan moet je werken met een flag.

  1. $online = true;
  2.  
  3. while($online == true) {
  4. ...
  5. if(restart) { $online = false; }
  6. }
Offline Oneday - 17/07/2011 14:20
Avatar van Oneday Nieuw lid
Stijn schreef:
Je kan idd de commando's in een aparte array/file ofzo bijhouden. Maar je moet een commando toevoegen die dan alles reload (!reload zoiets).

Als de bot volledig moet herstarten dan moet je werken met een flag.

[..code..]

Is die while dan in die oneindige while die ik al had? En komt in die while dan bv include("commands.php");
?
Offline Stijn - 17/07/2011 23:19
Avatar van Stijn PHP expert Je kan het op de volgende manier dynamisch maken je commando lijstje zonder herstarten!

commands.php
  1. $commands = array("command1" => "command_func", "add_command" => "add_func");
  2.  
  3. function command_func()
  4. {
  5. //..code voor dit commando..
  6. }
  7.  
  8. function add_func()
  9. {
  10. global $commands;
  11. $args = func_get_args();
  12. $commands[$args[0]] = $args[1]; //je kan een check doen als de functie $args[1] bestaat.
  13. }


bot.php
  1. include_once 'commands.php';
  2. while(true) {
  3. ...
  4. //$command bevat het commando en je kan een array maken voor de argumenten
  5. if(in_array($command, $commands)) {
  6. call_user_func_array($commands[$command], $arguments);
  7. }
  8. }
Offline Oneday - 17/07/2011 23:58 (laatste wijziging 18/07/2011 09:23)
Avatar van Oneday Nieuw lid
Stijn schreef:
Je kan het op de volgende manier dynamisch maken je commando lijstje zonder herstarten!

commands.php
[..code..]

bot.php
[..code..]

Maar vanaf dat commands.php 1x is ge-include en je gaat dan nog aanpassingen doen in commands.php, worden deze wijzigingen dan doorgegeven terwijl deze while bezig is?

UPDATE:

Zodra die while niet meer true is verliest hij de verbinding met IRC 
Offline Maarten - 18/07/2011 15:09
Avatar van Maarten Erelid Wat ik ooit eens deed was IN die while een loop doen door de 'modules' folder, die zooi includen, en dan de functies daaruit aanroepen, en als je dan een van die modules update, hoef je de bot niet te herstarten. En uiteraard had je dan de PingPongModule 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.237s