Vous avez trouvé le goulot d’étranglement – et maintenant ?
D’ACCORD! Vous avez donc trouvé la cause du problème. Que pouvez-vous y faire? Vous trouverez ci-dessous des problèmes courants auxquels j’ai fait face, ainsi que les pistes de solutions.
Base de données
Les requêtes de base de données figurent en tête de liste des problèmes de performances. Trop de requêtes ou des requêtes trop complexes sur une page peuvent ralentir le tout. Soyez à l’affût des requêtes effectuées dans une boucle et voyez s’il existe un moyen de retravailler votre structure pour éliminer ce besoin – une jointure supplémentaire, peut-être.
Retouche de SQL
Examinez votre code SQL pour voir s’il existe un moyen plus simple d’écrire vos requêtes.
Si vous avez un système d’exploitation plus ancien, évitez d’écrire des requêtes qui doivent utiliser l’ancien « moteur de requête classique » (classic query engine, CQE). Pour plus d’informations, consultez la documentation du répartiteur de requêtes pour votre système d’exploitation – par exemple.
Utiliser le conseiller d’index
Une fois que vous avez finalisé les requêtes que vous utiliserez, exécutez-les via le « Index Advisor » de votre outil « IBM i Access Client Solutions ». Commencez avec l’exécution des scripts SQL, entrez votre requête et cliquez sur « Visual Explain ». Cela vous montrera comment votre requête sera exécutée. Sélectionnez ensuite « Index Advisor » dans le menu et vous obtiendrez une liste d’index susceptibles d’améliorer les performances de cette requête. Il va même les créer pour vous ou générer la source SQL.
Ajax
Utilisez Ajax sur votre page pour charger différentes pièces qui peuvent prendre beaucoup de temps. Un utilisateur pardonne davantage les problèmes de performance s’il voit des choses changer sur son écran. N’oubliez pas d’utiliser une indication visuelle, telle qu’une roue qui tourne, pour montrer que quelque chose est en chargement.
Compression
Activez la compression sur votre serveur Apache. Cela aidera à accélérer le temps de transfert des données entre le serveur et le client.

https://httpd.apache.org/docs/2.4/mod/mod_deflate.html
Cache
La cache est votre ami. Si le traitement n’a pas besoin d’être répété, ne le répétez pas. Mais réfléchissez à ce qui devrait et ne devrait pas être mis en cache. Est-ce une donnée qui ne sera pas souvent mise à jour?
CSS/JS/Images
Les feuilles de style CSS, JavaScript et les images sont de bons candidats pour la mise en cache. Ajoutez quelque chose comme ceci à votre config apache:

Notez que vous pourriez vouloir implémenter un contournement de la cache lorsque vous mettez à jour votre CSS ou votre JavaScript. Vous pouvez utiliser quelque chose comme ça en définissant une variable de version quelque part dans votre PHP.

ZendCache
ZendCache est un autre outil servant à mettre en cache les données dans PHP. Il peut être utile de mettre en cache des informations que vous avez pu extraire d’une base de données ou d’un appel de service Web et que vous n’avez pas besoin de mettre à jour souvent.
https://docs.zendframework.com/zend-cache/
Les boucles
Le ralentissement est-il dans le code PHP ? Les boucles sont fondamentales pour la programmation, mais faites attention à ce que vous mettez dans les boucles. C’est un très mauvais signe s’il y a beaucoup de traitement dans une boucle qui pourrait être exécutée des centaines de fois. Les plus gros coupables sont les requêtes de base de données et les appels RPG/CL.
Les lots
Il n’est pas obligatoire de fournir tout de manière interactive au client. Il se peut que vous ayez des opérations de traitement intensives qui seraient mieux soumises en tant que traitement par lots. Un exemple que je rencontre souvent est la génération de PDF. Une fois le traitement effectué, envoyez à l’utilisateur une notification dans le navigateur ou par courrier électronique. Vous pouvez même soumettre PHP en lot depuis PHP :

Outils à jour
Dans la mesure du possible, gardez vos outils à jour pour profiter des améliorations de performances apportées. Cela pourrait inclure PHP et ZendServer, tous les outils tiers que vous utilisez et votre IBM i lui-même.
En résumé
J’espère que certains de mes conseils peuvent vous aider à tirer profit de votre application PHP et vous faire économiser du temps et des maux de tête.