| 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 plusieurs 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 premier de ces buts est réalisé en utilisant les fonctions
bcompiler_write_header(),
bcompiler_write_file() et
bcompiler_write_footer().
Les fichiers de bytecode peuvent être écris en non-compressés ou en texte plein.
Pour utiliser le bytecode généré, vous pouvez simplement l'inclure
avec les structures include ou require.
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.
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.