Lorsque vous utilisez ImageMagick, je peux définir certaines limites pour l'utilisation de la mémoire et le nombre maximum de threads. Il y a 3 façons de le faire, pour autant que je sache:Limiter le nombre de threads dans IMagick (PHP)
- utiliser une option de ligne de commande comme « convertir 128Mo mémoire -Limiter original.jpg new.jpg »
- utilisation des variables d'environnement comme « MAGICK_THREAD_LIMIT = 1 "
- modifiez le fichier de configuration 'policy.xml' pour modifier la valeur par défaut.
J'ai testé chacune de ces méthodes en utilisant "convert -list resource" et elles fonctionnent.
Maintenant, j'ai besoin d'utiliser l'extension IMagick en PHP. Il y a une fonction que je peux utiliser pour fixer des limites:
bool Imagick::setResourceLimit (int $type, int $limit)
Pour le premier paramètre que je peux utiliser une des opérations suivantes:
imagick::RESOURCETYPE_AREA (integer) //equivalent of MAGICK_AREA_LIMIT
imagick::RESOURCETYPE_DISK (integer) //equivalent of MAGICK_DISK_LIMIT
imagick::RESOURCETYPE_FILE (integer) //equivalent of MAGICK_FILE_LIMIT
imagick::RESOURCETYPE_MAP (integer) //equivalent of MAGICK_MAP_LIMIT
imagick::RESOURCETYPE_MEMORY (integer) //equivalent of MAGICK_MEMORY_LIMIT
Le problème est qu'il n'y a pas d'équivalent semble MAGICK_THREAD_LIMIT et imagick ignorer simplement les fichiers de configuration et les variables d'environnement. Comment je le sais? J'ai mis toutes les limites de la mémoire à zéro et IMagick fonctionne toujours sans aucun problème quand il devrait signaler une mémoire insuffisante. J'espère sincèrement que je me suis clairement fait comprendre. La question est: comment puis-je changer la limite de fil lors de l'utilisation d'IMagick?
EDIT: J'ai réussi à définir la limite de fil à 1 en compilant ImageMagick avec l'option '--without-threads'. : P Il faudra faire jusqu'à ce que je trouve une meilleure solution.
Avez-vous essayé à l'aide d'une petite valeur non nulle pour les limites de la mémoire ainsi? (par exemple., 1) Il ne semble pas y avoir de documentation sur la méthode setResourceLimit et il peut utiliser 0 comme illimité, ou 0 peut être ignoré et un défaut utilisé lorsque imagemagick est invoqué. – gapple
Si je définis les limites en utilisant $ image-> setResourceLimit à zéro, IMagick me donne des erreurs sur l'insuffisance de mémoire. Je suis assez sûr que cela les désactive parce que, par exemple, vous pouvez désactiver la mémoire du disque. – liviucmg
Je comprends que le réglage de la limite de ressources mémoire est simplement la quantité de RAM utilisée - s'il en faut plus, il utilisera son propre fichier d'échange sur disque pour le reste. – scotts