IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] Utilisation d'un script serveur


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Par défaut [Configuration] Utilisation d'un script serveur
    Bonjour voila j'ai différentes erreurs.
    Je m'explique j'ai un code qui me permet de pouvoir afficher ce qui se passe en temps réel sur un salon irc mais pour cela il me fallait un petit programme qui s'appelle WIG codé en php fonctionnent sous shell avec php-cli pour pouvoir faire la relation entre la page et le serveur irc après avoir fait la configuration je l'ai lancé et j'obtiens des erreurs comme je suis débutant en php une petite
    aide me serait d'un grand secours merci.

    Je suis sur un vds avec php4.

    le code source du programme php WIG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
     
    #!/usr/bin/php
    <?php
    /*
    * Configuration
    */
    define('IRC_ADDR', 'ip serveur a joindre');
    define('IRC_PORT', '6667');
    define('FLASH_ADDR', 'ip site');
    define('FLASH_PORT', '6679');
    define('MAXLINE', '2048');
    define('MAXCONCURRENT', '30');
    /*
    * Fin de la configuration
    */
     
    // Modification de configuration php
    error_reporting (E_ALL);
    set_time_limit(0);
    ob_implicit_flush ();
     
    // Fonction de decodage utf8
    // hack for utf8
    function smart_utf8_decode($in_str) {
    $new_str = str_replace('?', 'q0u0e0s0t0i0o0n', $in_str);
    $new_str=utf8_decode($new_str);
    if (strpos($new_str,'?') !== false) {
    $new_str=$in_str;
    } else {
    $new_str = str_replace('q0u0e0s0t0i0o0n', '?', $new_str);
    }
    return $new_str;
    }
     
    // Création du socket d'écoute (vers flash)
    $socketHandler = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ( !$socketHandler ) {
    fwrite(STDOUT, 'Creation du socket vers le flash [FAILED]'."\n");
    fwrite(STDOUT, 'Erreur lors du socket_create : '.socket_strerror($socketHandler)."\n");
    } else {
    fwrite(STDOUT, 'Creation du serveur [OK]'."\n");
    }
     
    // Adressage du socket
    socket_setopt($socketHandler, SOL_SOCKET, SO_REUSEADDR, 1);
    $bindRes = socket_bind($socketHandler, FLASH_ADDR, FLASH_PORT);
    if ( !$bindRes ) {
    fwrite(STDOUT, 'Erreur lors du socket_bind du flash : '.socket_strerror($bindRes)."\n");
    } else {
    fwrite(STDOUT, 'Socket du flash adressé : '."\n");
    }
     
    // Mise en ecoute
    $listenRes = socket_listen($socketHandler, MAXCONCURRENT);
    if ( !$listenRes ) {
    fwrite(STDOUT, 'Erreur lors du socket_listen du flash '."\n");
    } else {
    fwrite(STDOUT, 'Socket du flash en écoute '."\n");
    }
     
    // Initialisation des clients flash
    $maxi = -1;
    for ($i = 0; $i < MAXCONCURRENT; $i++) {
    $client[$i] = null;
    $clientBuff[$i] = '';
    }
     
    // Initialisation des liaison irc
    $maxi = -1;
    for ($i = 0; $i < MAXCONCURRENT; $i++) {
    $irc[$i] = null;
    $ircBuff[$i] = '';
    }
     
    $h = 0;
    // Boucle Principale
    while(true) {
    ++$h;
    // On recompose le tableau tabSocket
    // Socket Principal
    $tabSocket[0] = $socketHandler;
    // Les clients flash
    for ($i = 0; $i < MAXCONCURRENT; $i++) {
    if ($client[$i] != null) {
    $tabSocket[$i + 1] = $client[$i];
    }
    }
    // Les liaisons irc
    for ($i = 0; $i < MAXCONCURRENT; $i++) {
    if ($irc[$i] != null) {
    $tabSocket[MAXCONCURRENT + $i] = $irc[$i];
    }
    }
     
    // On nettoie les connexion fermees
    foreach ($tabSocket as $key=>$value) {
    if (get_resource_type($value)=='Unknown') {
    unset($tabSocket[$key]);
    }
    }
     
    // On bloque en attendant une connexion
    $pret = socket_select($tabSocket, $null = null, $null = null, null);
     
    // Si on detecte une nouvelle connexion
    if (in_array($socketHandler, $tabSocket)) {
    for ($i=0; $i < MAXCONCURRENT; $i++) {
    if ($client[$i]==null) {
    // On se met à l'écoute
    $client[$i] = socket_accept($socketHandler);
    socket_setopt($client[$i], SOL_SOCKET, SO_REUSEADDR, 1);
    socket_getpeername($client[$i], $remote_host[$i], $remote_port[$i]);
    // On fait une liaison à l'ircd
    $todisconnect = false;
    $irc[$i] = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if(!$irc[$i]) {
    $todisconnect = true;
    } else {
    $test = socket_connect($irc[$i], IRC_ADDR, IRC_PORT);
    if(!$test) {
    $todisconnect = true;
    }
    }
    if ($todisconnect) {
    // Y'a eut un probleme de connexion irc, on deconnecte le client
    socket_shutdown($client[$i]);
    socket_close($client[$i]);
    $client[$i] = null;
    unset($remote_host[$i]);
    unset($remote_port[$i]);
    }
    break;
    }
    if ($i == MAXCONCURRENT - 1) {
    echo 'Trop de clients'."\n";
    }
    }
    if ($i>$maxi) {
    $maxi = $i;
    }
    if (--$pret<=0) {
    continue;
    }
    }
     
    // On balaye les clients pour voir si un client a parlé
    for ($i = 0; $i <= $maxi; $i++) {
    if ($client[$i]==null) {
    continue;
    }
    if (in_array($client[$i], $tabSocket)) {
    $buff = trim(socket_read($client[$i], MAXLINE));
    if (!$buff) {
    // On ferme la connexion flash
    socket_shutdown($client[$i]);
    socket_close($client[$i]);
    $client[$i] = null;
    unset($remote_host[$i]);
    unset($remote_port[$i]);
    // On ferme la connexion ircd
    socket_shutdown($irc[$i]);
    socket_close($irc[$i]);
    $irc[$i] = null;
    } else {
    // On modifie les < pour que ca passe bien
    $buff = str_replace('&lt;','<', $buff);
    // On envoie du flash vers le irc
    socket_write($irc[$i], $buff."\n");
    }
    }
    }
     
    // On balaye connexionx irc pour voir si un irc a parlé
    for ($i = 0; $i <= $maxi; $i++) {
    if ($irc[$i]==null) {
    continue;
    }
    if (in_array($irc[$i], $tabSocket)) {
    $buff = trim(socket_read($irc[$i], MAXLINE));
    if (!$buff) {
    // On ferme la connexion flash
    socket_shutdown($client[$i]);
    socket_close($client[$i]);
    $client[$i] = null;
    unset($remote_host[$i]);
    unset($remote_port[$i]);
    // On ferme la connexion ircd
    socket_shutdown($irc[$i]);
    socket_close($irc[$i]);
    $irc[$i] = null;
    } else {
    // On decode si c'est en utf8
    $buff = smart_utf8_decode($buff);
    // On modifie les < en &lt;
    $buff = str_replace('<', '&lt;', $buff);
    // On envoie de irc vers flash
    $tabout = explode("\r\n", $buff);
    foreach($tabout as $value) {
    socket_write($client[$i], $value."\0");
    }
    }
    }
    }
    }
     
    // Fermeture du serveur
    socket_close($socketHandler);
    ?>
    et voilà les erreur que j'obtiens quand je lance le programme


    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Notice :  Use of undefined constant STDOUT - assumed 'STDOUT' in /home/denis/WIG/wig-gateway.cli on line 39
    
    Warning:  fwrite(): supplied argument is not a valid File-Handle resource in /home/denis/WIG/wig-gateway.cli on line 39
    
    Warning:  socket_bind() unable to bind address [98]: Address already in use in /home/denis/WIG/wig-gateway.cli on line 44
    
    Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /home/denis/WIG/wig-gateway.cli on line 46
    
    Warning:  fwrite(): supplied argument is not a valid File-Handle resource in /home/denis/WIG/wig-gateway.cli on line 46
    
    Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /home/denis/WIG/wig-gateway.cli on line 56
    
    Warning:  fwrite(): supplied argument is not a valid File-Handle resource in /home/denis/WIG/wig-gateway.cli on line 56

    si quelqu'un peut m'aider

    merci d'avence

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    pour STDOUT, c'est une constante prédéfinie qui existe seulement depuis PHP 5 mais essaye le code suivant si tu es sous PHP 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!defined('STDOUT')) {
        define('STDOUT', fopen('php://stdout', 'w'));
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Par défaut


    Citation Envoyé par mathieu
    pour STDOUT, c'est une constante prédéfinie qui existe seulement depuis PHP 5 mais essaye le code suivant si tu es sous PHP 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!defined('STDOUT')) {
        define('STDOUT', fopen('php://stdout', 'w'));
    }
    J'ai changé comme tu me la indiqué mais sa ne fonctionne toujours pas j'ai encore plus d'erreurs et la connections ne ce fait pas ci une autre idée vous viens .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Configuration] Utilisation de "flush" chez OVH
    Par yvan02 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 20/02/2010, 16h10
  2. utiliser police freestyle script sur un serveur
    Par ben.IT dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/08/2009, 10h23
  3. Comment utiliser et configurer la version embedded du serveur mySQL ?
    Par neodelphi2007 dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2009, 10h57
  4. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56
  5. Configuration des disques sur un serveur pour Oracle
    Par hkhan dans le forum Administration
    Réponses: 5
    Dernier message: 29/09/2004, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo