2009-10-14 6 views
0

Je suis intéressé à faire une application qui peut déterminer automatiquement quels fichiers sont inclus dans PHP. Ce que je veux dire, c'est que je voudrais faire une application C/C++ ou C# qui fonctionne en arrière-plan et que vous développez sur votre machine locale, elle peut afficher les fichiers inclus par PHP comme vous lancez des pages en cours d'exécution sur votre apache local. Ce que je pensais était de modifier la fonction dans le code source php, mais ensuite je pensais que ce serait une mauvaise idée car alors chaque nouvelle version de php, je devrais revenir en arrière et faire les mêmes modifications et je doute que tout le monde ferait cela. Donc, ma question est, est-il possible à distance d'obtenir tous les fichiers inclus que votre application php utilisé et puis en quelque sorte les afficher à l'utilisateur sans utiliser get_included_files() dans votre programme php?Aimeriez-vous faire un php get_include_files() améliorations

Répondre

1

Vous pourriez sortir complètement de PHP et compter sur le système d'exploitation sous-jacent pour rapporter ces détails. Il serait difficile de faire correspondre la demande à l'inclusion mais cela ne fonctionnerait que dans une situation de développement. Si le système d'exploitation est Linux/UNIX, vous pouvez exécuter strace sur l'exécutable (en supposant que vous utilisiez Apache avec mod_php, d'autres situations plus difficiles). Si le système d'exploitation est Windows, je ne sais pas quoi utiliser, mais l'un des utilitaires SysInternals possibles (la plupart sont GUI mais il existe probablement une console équivalent à strace ou une version de strace pour Windows).

Une autre option serait d'utiliser xdebug. Il vous montrerait beaucoup plus d'informations, y compris les détails de profilage, l'utilisation de la mémoire, etc. Il est utilisé comme une extension PHP et il est facile de profiler une requête entière dans un instantané. Une fois que vous avez un fichier de trace, vous pouvez utiliser WinCacheGrind (Windows), kCacheGrin (UNIX, peut-être OS X aussi) et autre chose pour OS X. Je vous suggère d'essayer ceci car c'est l'approche la plus simple et puissante chercher à faire cela plutôt que de faire une programmation exploratoire.

http://xdebug.org/

Si vous êtes intéressé à faire des programmes d'exploration, mon itinéraire suggéré serait de regarder comment fonctionne Xdebug et voyez si vous pouvez écrire un crochet aux fonctions que vous voulez tracer.

Questions connexes