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 :

"Tracer" une extension php


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut "Tracer" une extension php
    Bonjour,
    je ne sais pas si je poste dans la bonne section mais ma demande est spécifique et je ne pense pas qu'elle est une autre place ailleurs.

    Je developpe actuellement une extension PHP donc développée en C et compilée sous la forme d'une DLL. Extension que je lance avec une version php 5.3.3 sous uniserver (serveur like apache). j'ai des fonctions de trace dans mon code C, des fonctions d'affichages car j'aimerais pour debugguer afficher certaines valeurs pour voir si mon code est good ... mais bon comment afficher mes petits stdout et autre printf ? hmmm ?
    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    La sortie standard ne sera pas lisible si le serveur est démarré pour tourner comme démon.

    Il faudrait passer en CLI ou ne pas démarrer le serveur en démon (pour Apache, par exemple, c'est httpd -w ou -X, en console, suivant le système) ou encore utiliser autre chose que la sortie standard réelle.

  3. #3
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut
    Mon php se trouve ici :
    C:\Uniserver\usr\local\php

    Ma page de test php se trouve ici :
    C:\Uniserver\www

    j'ai lancé en commande ceci :
    C:\Uniserver\usr\local\php\php.exe ../../../www.test.php

    mais ca ne me reconnais pas mes fonctions de mon extension :
    Fatal error : call to undefined function module_net_client_initialize() in test.php line 156.
    ma page de test :

    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
    <!-- Used for CLI -->
    #!C:\UniServer\usr\local\php\php.exe -q
     
    <?php
    // $test.php module example
     
    $nmodule = 'module';
     
    // client state
    define ("STATE_BEGIN", 0);
    define ("STATE_SESSION_OPEN", 1);
    define ("STATE_TEST_MODULE", 2);
    define ("STATE_TEST_SQL", 3);
    define ("STATE_TEST_INSERT", 4);
    define ("STATE_SESSION_CLOSE", 5);
    define ("STATE_END", 6);
     
    // The socket protocol
    define ("NET_ADDR_UDP", 17);
    define ("NET_ADDR_TCP", 6);
     
    // The socket family
    define ("NET_ADDR_UNSPEC", 0);
    define ("NET_ADDR_UNIX", 1);
    define ("NET_ADDR_INET", 2);
    define ("NET_ADDR_INET6", 26);
     
    /* module net client initialize    */
    $server_addr = "192.168.1.42";
    $server_port = "5432";
    $family      = NET_ADDR_INET;
    $protocol      = NET_ADDR_UDP;
     
    /* module nt client finalize    */
    $rval_net_client_finalize = 0;
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional">
    <html>
        <head>
            <title>module example</title>
            <style>
                *{font-family:verdana; font-size:12px;}
            </style>
        </head>
        <body>
            <?php            
                // Test if extension is loaded
                function initialisation($nmodule)
                {
                    if(!extension_loaded($nmodule))
                    {
                        die($nmodule . " extension is not available, please compile it.\n");
                    }
                    $functions = get_extension_funcs($nmodule);
                    echo "Functions available in the " . $nmodule . " extension :<br>";
                    foreach($functions as $func)
                    {
                        echo $func."<br>";
                    }
                    echo "<br>";
                }
     
                // Run a module test
                function run_test($net_client)
                {
                    $instance = 0;
                    $state = STATE_BEGIN;
                    $session_id = 0;
                    for(;;)
                    {
                        switch ($state)
                        {
                            case STATE_BEGIN:
                                echo "<br><br>>> BEGIN";
                                $state = STATE_SESSION_OPEN;
     
                            case STATE_SESSION_OPEN:
                                echo "<br>>> session_open";
                                $instance = module_session_open($net_client, NULL);
                                echo " - instance : " . $instance;
                                break;
     
                            case STATE_TEST_MODULE:
                                echo "<br>>> test_module";
                                $instance = module_test_module($net_client, NULL, 100);
                                echo " - instance : " . $instance;
                                break;
     
                            case STATE_TEST_SQL:
                                echo "<br>>> test_sql";
                                $instance = module_test_sql($net_client, NULL, "joe");
                                echo " - instance : " . $instance;
                                break;
     
                            case STATE_TEST_INSERT:
                                echo "<br>>> test_insert";
                                $instance = module_test_insert($net_client, NULL, 1, 2, "test");
                                echo " - instance : " . $instance;
                                break;
     
                            case STATE_SESSION_CLOSE:
                                echo "<br>>> session_close";
                                $instance = module_session_close($net_client, NULL);
                                echo " - instance : " . $instance;
                                break;
     
                            case STATE_END:
                                echo "<br>>> END";
                                break;
                        }
                        if ($state == STATE_END)
                        {    
                            break;
                        }
                        $next = 0;    
                        while ($next == 0)
                        {
                            module_net_client_update($net_client, 1);                        
                            switch ($state)
                            {
                                case STATE_BEGIN:
                                    break;
     
                                case STATE_SESSION_OPEN:
                                {
                                    echo "<br>";
                                    $session_id = module_session_open_result($instance);
                                    /*if ($session_id != 0)
                                    {
                                        echo "module_session_open_result = " . $session_id;
                                    }*/
                                    if (module_net_func_is_finished($instance) == TRUE)
                                    {
     
                                    }
                                    $state = STATE_END;
                                    $next = 1;
                                }
                                break;
     
                                case STATE_END:
                                    $next = 1;
                                    break;
                            }
                        }
                        module_net_client_end_function($net_client, $instance);
                        module_net_client_set_session_id($net_client, $session_id);
                    }            
                }
     
                initialisation($nmodule);    
     
                /* module net client initialize    */
                echo "<br><b>Module net client initialize : </b>";
                $net_client = module_net_client_initialize($server_addr, $server_port, $family, $protocol);
                echo " - net_client : " . $net_client;    
     
                run_test($net_client);            
     
                /* module net client finalize    */
                echo "<br><br><b>Module net client finalize : </b>";
                $rval_net_client_finalize = module_net_client_finalize($net_client);
                echo $rval_net_client_finalize;
            ?>
        </body>
    </html>
    EDIT : En effectuant php -m pour voir si mon module est chargé ou non ca me dis qu'il n'est pas chargé dans php. comment le charger ? pourtant je l'ai bien rajouté dans mes extensions et dans le fichier php.ini

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    C'est que vraisemblablement le SAPI CLI utilise un tout autre fichier php.ini où votre extension n'apparaît pas pour être chargée.

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Uniserver\usr\local\php\php.exe -m
    C:\Uniserver\usr\local\php\php.exe --ini


    A moins que php-cli ait fait l'objet d'un "build" totalement différent et distinct ou encore que l'extension en question ne puisse être chargée (ce qui devrait être indiqué en affichant les erreurs - display_errors, display_startup_errors surtout et error_reporting = E_ALL) - librairie statique vs dynamique.

  5. #5
    Membre averti Avatar de Fooshi
    Homme Profil pro
    ICD
    Inscrit en
    Juin 2002
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ICD
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 507
    Points : 359
    Points
    359
    Par défaut
    Ca ne pointais pas sur le bon fichier mais je n'ai pas trouvé comment changer le fichier, entre les variables d'environnements, la base de registre je n'ai pas trouvé, j'ai remplacé le fichier php-cli.ini qui pointais par mon php.ini mais bon ...
    j'ai un printf qui s'affiche donc ca a l'air de fonctionner ! merci

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

Discussions similaires

  1. Ajout d'une extension PHP
    Par Shin_RockmanX dans le forum IIS
    Réponses: 0
    Dernier message: 12/08/2008, 21h11
  2. Développement d'une extension php liée à ocilib
    Par grincheux01 dans le forum Visual C++
    Réponses: 4
    Dernier message: 22/02/2008, 18h55
  3. charger une extension php sur un hébergeur mutualisé (php 4)
    Par benjamin raspel dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 07/11/2007, 17h20

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