Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3099 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Recherche expert en zend engine & fonctionnement interne de PHP :o

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche expert en zend engine & fonctionnement interne de PHP :o

n°2229674
joce
Architecte / Développeur principal
"BugHunter"
Posté le 01-06-2014 à 19:05:23  profilanswer
 

Du coup je sais pas trop s'il faut ranger dans C ou dans PHP :D
 
Je galère grave avec ce qui ressemble à un pb d'allocation mémoire sur une extension PHP (le code est assez simple).
 
En gros j'aimerais stocker dans un array les paramètres courant d'une fonction, qui seront ensuite passés à une nouvelle fonction PHP.
J'aimerais que les paramètres ne sont pas des copies, mais des références, du coup je n'incrémente que le refcount de chaque argument, mais ca à l'air de souvent foirer :
 
Ex :  
 

Code :
  1. zval *element;
  2. ALLOC_ZVAL(element);
  3. // copy the value, type & refcount / is_ref
  4.         INIT_PZVAL_COPY(element, *((zval **) (p-(arg_count-i))));
  5.         // increment the ref count
  6.         zval_add_ref(&element);
  7. zend_hash_next_index_insert((*args[0])->value.ht, &element, sizeof(zval *), NULL);


 
ce args[0] sera transmis à la nouvelle fonction PHP via :
 

Code :
  1. call_user_function_ex(EG(function_table), NULL, cl->func, &retval, arg_count, args, 0,NULL TSRMLS_CC);


 
Si vous voyez un truc totalement débile dans ce bout de code ou dans le concept, je suis preneur !

mood
Publicité
Posté le 01-06-2014 à 19:05:23  profilanswer
 

n°2229685
joce
Architecte / Développeur principal
"BugHunter"
Posté le 01-06-2014 à 22:36:05  profilanswer
 

bon j'ai essayé à la place
 

Code :
  1. zval *element;
  2.  ALLOC_ZVAL(element);
  3.  *element = *(EG(current_execute_data)->object);
  4.  zval_copy_ctor(element);
  5.  INIT_PZVAL(element);
  6.                 zend_hash_next_index_insert((*args[0])->value.ht, &element, sizeof(zval *), NULL);


 
sachant que je suis dans une fonction qui a intercepté l'appel à execute_internal du zend engine. (hook sur le execute_internal)
ce que je ne comprends absolument pas c'est que la valeur de args[0] réussit à être modifiée après appel à execute_internal (qui modifie EG(current_execute_data)->object), alors que la valeur stockée dans mon Hash est censé être une copie de EG(current_execute_data)->object.....
Je sèche completement :(
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Recherche expert en zend engine & fonctionnement interne de PHP :o

 

Sujets relatifs
[PHP/Javascript] API Google Maps : marqueur ne fonctionne pasPHP liens
Panier en PHP[HTML/PHP]Construction de code d'un site web.
[PHP] probleme #Ressource #Fichier sur manip imagePanier en PHP
Procédure Stocké & PHPRecherche Soft pour avoir un son sur les touches en Majuscule
Problème PHP/SQLrecherche d'un instruction pour recherche
Plus de sujets relatifs à : Recherche expert en zend engine & fonctionnement interne de PHP :o


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR