Augmentation de la charge de travail du serveur lors du redimensionnement de l’image php

J’ai un script PHP qui redimensionne l’image en trois résolutions différentes lors du téléchargement. Lorsque je télécharge une image, elle la redimensionne à 300 * 300, 80 * 80, 800 * 800 et enregistre également le fichier d’origine.

Le script que j’utilise est le lien suivant https://github.com/blueimp/jQuery-File-Upload/blob/master/example/upload.php

les images suivantes sont le moniteur système du serveur. Les deux premières pointes de l’historique du processeur sont le redimensionnement de l’image qui a lieu lorsque le fichier est téléchargé individuellement. Les fichiers suivants sont téléchargés depuis une queue.

Charge de travail CPU

Lors de ce téléchargement, le serveur n’a pas pu traiter d’autres demandes. Je ne peux pas accéder à d’autres pages à ce moment. soit la page charge la moitié, soit ne se charge pas du tout, soit la page se charge une fois le téléchargement terminé.

J’ai besoin d’une solution immédiate à ce problème. comment surmonter ce problème. Je dois remplir pour le serveur. Existe-t-il un pluggin pour apache pour le redimensionnement de l’image ou y a-t-il un problème avec le code?

Même si redimensionner une image prenait 100% du processeur pendant une minute, il serait toujours possible de faire d’autres requêtes: vous utilisez un serveur multi-processus sur un système d’exploitation multitâche (et probablement aussi plusieurs cœurs).

Cependant, lorsque vous démarrez une session PHP, la session est verrouillée : les autres requêtes essayant d’utiliser la même session doivent attendre la fin de la première requête .

C’est pourquoi vous ne pouvez pas effectuer de requêtes simultanées pendant le redimensionnement de l’image.

Vous devez fermer votre session avant de procéder à un long traitement (et éventuellement le rouvrir après cela).

Donc, cela devrait résoudre votre problème:

session_write_close(); resize_the_image(); session_start(); 

Essayez d’utiliser ImageMagick pour redimensionner à la place des fonctions PHP normales, ce qui pourrait réduire un peu la charge.

Lors de ce téléchargement, le serveur n’a pas pu traiter d’autres demandes

Je trouve cela très surprenant, d’autant plus qu’il y a 2 cœurs (même si vous ne dites pas quel système d’exploitation / serveur web vous utilisez). Si seule la fonctionnalité de téléchargement d’image est affectée, je suppose que cela peut être dû à des problèmes au sein de votre script PHP.

Il est certainement possible de réduire la quantité de charge générée par le serveur pendant le traitement. La plupart de ces opérations impliqueraient le lancement d’un nouveau processus compilé (par exemple via exec) pour traiter l’image, par exemple à partir du groupe d’ utilitaires imageMagick – mais sans savoir ce que c’est que le système d’exploitation,

En termes de réduction de l’impact de la conversion d’image, j’exécute une queue gérée pour les images entrantes à traiter. Cela vous assurerait que la gestion de l’image ne s’exécute que sur un seul cœur.