J'ai donc ce script cron qui est déployé et exécuté en utilisant Cron sur un hôte et indexe tous les enregistrements dans une table de base de données - l'index est ensuite utilisé pour la partie frontale du site et les opérations sauvegardées.Comment optimiser l'indexation d'un grand nombre d'enregistrements DB en utilisant Zend_Lucene et Zend_Paginator
Après l'opération, l'index est d'environ 3 à 4 Mo.
Le problème est qu'il nécessite beaucoup de ressources (CPU: 30+ et une bonne partie de la mémoire) et ralentit la machine. Ma question est sur la façon d'optimiser l'opération décrite ci-dessous:
D'abord il y a une requête de sélection construite en utilisant l'API Zend Framework, cette requête est ensuite passée à une usine de Paginator qui retourne un paginateur que j'utilise pour équilibrer le courant nombre d'éléments indexés et ne pas itérer trop d'éléments. Le script parcourt les éléments actuels de l'objet paginator à l'aide d'une boucle foreach jusqu'à la fin, puis il recommence depuis le début après l'obtention des éléments de la page suivante.
Je soupçonne que cette surcharge est causée par le Zend_Lucene mais je ne sais pas comment cela pourrait être amélioré.
Plusieurs fois dans les ressources en ligne, ils mentionnent que l'indexation est une façon de ralentir en PHP et que cela peut être mieux fait en utilisant Java - ie. utilisez Java Lucene pour (re) construire l'index, utilisez PHP avec Zend_Lucene uniquement pour le frontal. BTW Certains documents de lecture: http://dadabase.de/weblog/archives/2009/07/22/recommendation-dont-use-zend-php-lucene – wimvds