Avertissement |
Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls. |
Bcompiler a été écrit pour deux raisons :
Pour encoder un script complet dans une application PHP propriétaire |
Pour encoder des classes et/ou des fonctions dans une application PHP propriétaire |
Pour permettre d'utiliser des applications php-gtk sur des bureaux clients sans avoir besoin du fichier php.exe. |
Pour rendre faisable de convertir un code PHP en C |
Le second but est atteint en utilisant les fonctions bcompiler_write_header(), bcompiler_write_class(), bcompiler_write_footer(), bcompiler_read() et bcompiler_load(). Les fichiers bytecode peuvent être écris en non-compressés ou en texte plein. La fonction bcompiler_load() lit un fichier bytecode compressé bzippé, qui tend à avoir un taille d'1/3 par rapport au fichier original.
Pour créer des fichiers du type EXE, bcompiler doit être utilisé avec un fichier sapi modifié ou une version de PHP qui a été compilé en tant que bibliothèque partagée. Dans ce cas, bcompiler lit le bytecode compressé depuis la fin du fichier exe.
bcompiler peut augmenter d'environ 30% ces performances lorsqu'il est utilisé avec uniquement du bytecode non-compressé. Mais gardé en mémoire que le bytecode non-compressé peut être 5 fois plus long (voir plus) que le code source original. Utiliser la compression bytecode peut vous permettre de réduire l'espace disque mais la décompression requiert plus de temps que de parser simplement le code source. bcompiler n'effectue aucune optimisation du bytecode, cette fonctionnalité pourra être ajoutée dans le futur...
bcompiler n'est pas susceptible d'améliorer les performances d'exécutions, car il ne fait que dévier l'étape de compilation du processus courant PHP et la rempalce par le processus d'importation dans bcompiler. Il n'optimise pas le bytecode, ce qui pourrait être ajouté dans le futur.
En terme de sécurité du code, il est possible de dire qu'il est impossible de recréer le code source exact depuis lequel il a été construit et sans les commentaires accompagnant le code source. Il serait inefficace d'utiliser bcompiler pour recréer et modifier une classe. Malgrès tout, il reste possible de récupérer les données depuis un fichier bytecode encodé avec bcompiler, donc, n'y mettez pas vos mots de passe ou toute autre donnée de ce genre.
Note succincte d'installation :
Vous avez besoin d'au moins PHP 4.3 pour que la compression fonctionne
Pour l'installer sur PHP 4.3 et suivant, à l'invite de commande Unix, tapez la commande : pear install bcompiler
Pour l'installer sous Windows, tant que le méchanisme de distribution de paquets n'est pas temriné, merci de rechercher dans les archives de la liste de diffusion pear-general les paquets pré-construits. (ou envoyer un email sur cette liste si vous ne trouvez aucune référence)
Pour l'installer sur une version plus ancienne, vous devez effectuer quelques modifications à la construction.
décompressez l'archive bcompiler.tgz dans le dossier php4/ext. (récupérez le directement depuis PECL http://pecl.php.net/get/bcompiler)
Si le nouveau dossier porte un nom comme bcompiler-0.x, alors, renommez le en bcompiler (mise à part si vous voulez le construire comme module php autonome).
Si vous utilisez une version plus ancienne que PHP 4.3, vous devez copier le fichier Makefile.in.old dans Makefile.in et le fichier config.m4.old dans config.m4.
exécutez la commande phpize dans le dossier ext/bcompiler
exécutez la commande ./buildconf dans le dossier php4
exécutez la commande configure avec l'option --enable-bcompiler (ainsi que vos autres options)
make; make install
that's it.
Si vous avez des commentaires, des corrections de bogues, des améliorations ou que vous voulez aider à rendre cette extension meilleure, vous pouvez envoyer un email à alan_k@php.net. Toute aide est vraiment la bienvenue.
Précédent | Sommaire | Suivant |
bcsub | Niveau supérieur | bcompiler_load_exe |