Concernant l'efficacité d'exécution de PHP, il existe de nombreux articles spéciaux sur Internet, dont la plupart sont des débats entre les camps PHP et Java. Différents aspects des applications et différents environnements d'exécution entraîneront une plus grande différence d'efficacité. Les « grandes » applications mentionnées ici ne font pas référence à la mise en œuvre spécifique de grands sites Web tels que Google, eBay et Yahoo. J'espère simplement que votre système pourra fonctionner plus rapidement et plus facilement, et qu'il pourra héberger plus d'utilisateurs en ligne. peut donner à PHP Un peu d'aide pour les débutants.
Les « grandes » applications mentionnées ici ne font pas référence à la mise en œuvre spécifique de grands sites Web tels que Google, eBay et Yahoo. Je n'ai pas l'intention de persuader les lecteurs d'abandonner leurs concepts et leurs croyances. J'espère simplement que les systèmes de chacun pourront fonctionner plus rapidement. et plus fluide. Il peut héberger plus d'utilisateurs en ligne, et j'espère qu'il pourra aider les débutants en PHP.
Concernant l'efficacité d'exécution de PHP, il existe de nombreux articles spéciaux sur Internet. La plupart d'entre eux commencent par un débat entre les camps PHP et Java et se terminent par des attentes incertaines. En effet, l’efficacité d’exécution d’un programme est difficile à déduire d’une comparaison. Différents aspects des applications et différents environnements d’exécution entraîneront une plus grande différence d’efficacité. Et l'efficacité doit également être prise en compte.Tout le monde sait que le langage assembleur est de très bas niveau et peut écrire des programmes très efficaces. Cependant, j'ai rarement vu quelqu'un utiliser l'assembleur pour le développement Web et avoir la capacité d'écrire des programmes en assembleur. les programmeurs efficaces semblent mériter le respect de tous, haha~ Nous n'avons pas besoin de discuter de la différence entre PHP et assembleur, tant que nous connaissons la différence entre notre propre PHP et celui des autres.
Tout d’abord, soyons clairs sur le principe de cet article : il doit y avoir un ou plusieurs serveurs contrôlables par vous-même, pas un espace hôte virtuel. Après tout, il existe déjà de nombreux travaux classiques et frameworks matures pour les systèmes à usage général pouvant fonctionner sur des hôtes virtuels. Beaucoup de leurs concepts ont également été hérités et développés par de nombreux utilisateurs PHP actuels. De plus en plus Plus il y a de soi-disant « cadres », ils sont comme des étoiles dans le ciel, je ne veux plus écrire sur eux, parce que d'abord, mon propre niveau n'est pas très bon, je ne peux rien écrire. nouveau, et même si je l'écris, cela fera rire les gens. Deuxièmement, il y a trop d'articles écrits à ce sujet, et il y a trop d'opinions. La confusion est le principal coupable qui cause la mort de nombreux futurs programmeurs de génie passionnés.
Il existe une grande différence en termes d'optimisation de l'efficacité entre les programmes exécutés sur un serveur dédié et les programmes pouvant être exécutés sur un hôte virtuel. Bien sûr, vous pouvez installer un ensemble de Discuz sur un ou même plusieurs serveurs indépendants sans modification, mais obtient-il vraiment une optimisation maximale des performances. Êtes-vous vraiment digne de ce groupe de serveurs ?
Un serveur indépendant signifie que l'utilisateur a un contrôle total sur la machine, y compris l'installation et la suppression de logiciels, la configuration des paramètres du système et même la modification du code source. Sur la base d'une telle plate-forme matérielle ouverte, les performances ne se reflètent pas seulement dans la vitesse, mais incluent également la sécurité, la stabilité, etc. Contrairement aux hôtes virtuels, les utilisateurs doivent configurer les paramètres du serveur Web, installer et configurer PHP, les bases de données et installer toutes sortes de choses compliquées (comme j'aime le dire) par eux-mêmes, et bien sûr, ils doivent en être responsables.
Tout d’abord, proposons quelques termes : temps d’exécution, modèle, encapsulation de base de données, cache, tampon, hachage, démon et crontab.
Tout le monde sait que le temps d’exécution est le temps nécessaire à un programme pour s’exécuter du début à la fin. Le Web étant transitoire et sans état, le temps d'exécution est un indicateur de l'efficacité de l'exécution des programmes Web. Il ne convient pas pour mesurer les programmes C/S ou les programmes démons en arrière-plan, car nombre d'entre eux s'exécutent en continu. Un exemple typique de temps d'exécution d'une page est l'heure affichée en bas de la page du forum Discuz. Habituellement, Discuz varie de quelques millisecondes à des dizaines de millisecondes, en fonction de la plate-forme utilisée, de la quantité de données et de la pression actuelle du système.
Tout le monde connaît les modèles. Même si de nombreuses personnes les utilisent, elles ne savent pas pourquoi elles les utilisent. Les modèles sont traditionnellement un moyen de diviser les couches logiques. Dans la structure supérieure du MVC, ils séparent la couche de présentation de la couche inférieure. En utilisation réelle, ils facilitent la division du travail entre les programmeurs et les concepteurs d'interfaces. Cependant, dans de nombreux cas, en raison d'une utilisation inappropriée des modèles, au lieu de promouvoir la division du travail et la coopération entre programmeurs et concepteurs d'interfaces, ils sont devenus le principal coupable de la haine mutuelle entre programmeurs et artistes (je pense l'avoir dit dans un article précédent), de nombreuses personnes se plaignent de devoir passer beaucoup de temps à organiser leurs modèles.
L'encapsulation de base de données semble être davantage liée à Java. Elle fournit une interface d'appel unifiée pour divers systèmes de bases de données, généralement certaines classes encapsulées. Ces classes effectuent parfois également certaines tâches telles que la vérification SQL, le filtrage, etc. Les packaging DB, PEAR DB, Adodb, etc. dans PHPLIB sont tous célèbres et utilisés par de nombreuses personnes.
Cache et Buffer semblent être la même chose, Cache est appelé cache et Buffer est appelé mise en mémoire tampon. Dans le concept matériel, le but du Cache est de connecter deux périphériques avec des vitesses différentes, tels que les registres et la mémoire, le CPU et le bus PCI, le bus IDE et le disque dur. La signification originale de Buffer est un tampon en forme de ressort, quelque chose utilisé pour réduire ou absorber le choc de l'impact. Buffer est une méthode de pré-accès aux données utilisée pour stocker temporairement des données et les transmettre à une vitesse différente de la vitesse de réception. La méthode de mise à jour du tampon peut être automatiquement actualisée en fonction des intervalles de temps, tandis que le cache accorde plus d'attention au « taux de réussite » et place une petite quantité de données fréquemment utilisées au cours de la période actuelle dans un appareil à grande vitesse pour une lecture facile. et l'écriture. Dans le développement de programmes, bien qu'il n'y ait pas de dispositifs à haute ou basse vitesse, les sources de données peuvent avoir des efficacités de lecture et d'écriture différentes. Pour une petite quantité de données, la lecture et l'écriture de fichiers texte sont généralement plus efficaces que l'accès à la base de données, et la même efficacité de lecture et d'écriture de fichiers texte sur tmpfs est meilleure que l'efficacité des E/S directes du disque. Le tampon se reflète davantage dans la communication du processus et les files d'attente. Dans de nombreux cas, ce n'est pas parce que le récepteur est incapable de lire plus rapidement, mais parce qu'il n'est pas nécessaire de lire plus rapidement.
Un processus démon est un programme exécuté en permanence en arrière-plan. Il joue généralement un rôle dans la surveillance, le contrôle des processus et la fourniture de services externes. Par exemple, Apache lui-même peut être compris comme un processus démon, bien qu'il soit en réalité composé de nombreux processus fréquemment mis à jour (le processus principal est fixe).
Crontab est un programme planifié UNIX/Linux, qui ressemble un peu aux « tâches planifiées » de Windows. Il définit un certain intervalle de temps ou un certain moment pour exécuter un programme spécifique. Il est généralement utilisé pour effectuer des mises à jour automatiques, effacer des données temporaires et d'autres opérations automatiquement effectuées une fois sur une période donnée.
Un autre concept particulier (surtout pour les personnes habituées au développement général de systèmes) est qu'une fois que nous disposons d'un serveur indépendant, il n'est pas nécessaire de nous limiter aux fonctions que PHP peut fournir. Lorsque nous devenons sans le savoir les maîtres du système. Nous devons travailler dur pour réaliser cela. Il y a beaucoup de choses que nous pouvons utiliser. PHP n'est pas omnipotent (c'est sûr), et ses défauts fonctionnels peuvent être complètement compensés par Perl. En tant que langage général, Perl peut fournir plus d'options fonctionnelles, et ses modules sont aussi denses que du courage. Le langage décontracté et pervers offre une infinité. énergie. Pour les défauts de performances de PHP, le C peut être utilisé pour compenser. Les fondations de PHP sont héritées du C. PHP lui-même est également développé par C. Il est tout à fait raisonnable d'utiliser C pour étendre PHP.
Linux lui-même est pris en charge par C et Perl (je dis cela pour ne pas exagérer le statut de Perl. Vous pouvez voir combien de scripts Perl il y a dans un Linux standard et voir si le système ressemble à une personne handicapée sans Perl). PHP a hérité de la majeure partie de sa syntaxe du C et a appris la plupart des fonctionnalités et fonctions Web ainsi que le symbole "$" qui semble être contradictoire avec l'open source de Perl (PHP était un script Perl à ses débuts).
Analysons une partie du code que j'utilise (Remarque : applicable aux serveurs autonomes Linux. Il semble que j'ai abandonné le développement à grande échelle pour Windows et les hôtes virtuels depuis longtemps). Il utilise certaines méthodes qui peuvent être familières, inconnues ou anormales. Mon système est RedHat AS3, rien de spécial, la version PHP est 4.4.0, MySQL est 4.1. Je n’écris jamais intentionnellement de code devant utiliser les nouvelles fonctionnalités de PHP5, sauf si cela est vraiment nécessaire.
Mon répertoire racine Web se trouve sous /www. Apache et PHP sont installés sous /usr/local/ par défaut. MySQL est une version binaire téléchargée et compilée, et je la laisse également là. Parce que c'est juste pour tester, je ne veux pas que cela ait l'air compliqué. Quant aux projets réels, surtout dans le cas de plusieurs serveurs, vous devez bien déployer votre système.
Afin de rendre la structure du système plus claire, j'ai mis tous les fichiers dont j'ai besoin pour utiliser dans le répertoire secondaire.
Voici quelques extraits du fichier d'en-tête commun /includes/kernel/common.inc.php :
﹤?php
si (!défini('IN_BSG')) {
sortie;
}
?﹥
Le code ci-dessus garantit qu'il ne peut être appelé que par des programmes légaux et ne sera pas inclus par d'autres fichiers. Si le programme en cours d'exécution ne définit pas de constante 'IN_BSG', il se terminera après avoir inclus ce common.inc.php.
﹤?php
list($usec, $sec) = éclater(" ", microtime());
$page_time_start = $usec + $sec ;
?﹥
Tout le monde connaît peut-être ces deux lignes, qui servent à calculer l’heure de début d’exécution du programme. Avant la fin du programme, celui-ci est à nouveau calculé pour connaître le temps nécessaire à l'exécution du programme. Si cela ne vous intéresse pas, vous pouvez le commenter en toute sécurité.