2010-02-20 3 views
0

Pour que plusieurs scripts PHP (10 à 100) s'exécutent, quelle est la solution la moins gourmande en mémoire?Transmettre des données entre des scripts PHP en cours d'exécution

  • moniteur de fichiers plats pour les changements
  • conservation des requêtes en cours d'exécution sur un DB pour vérifier les nouvelles données

D'autres techniques que je l'ai entendu parler, mais jamais essayé:

  • Mémoire partagée (APC ou fonctions principales)
  • Files d'attente des messages (MQ active et société)
+0

Combien de scripts? juste un couple ou beaucoup et beaucoup d'entre eux? – Joelio

+0

10 à 100 scripts? –

+0

Sur quel système d'exploitation/plate-forme? Votre question suggère IPC (communication inter-processus), les installations pour cela varient considérablement en fonction de ce qui est en cours d'exécution PHP. –

Répondre

2

En général, une solution basée sur la mémoire partagée sera la plus rapide et aura le moins de frais généraux dans la plupart des cas. Si vous pouvez l'utiliser, faites-le.

Files d'attente de messages Je ne sais pas grand-chose, mais quand le choix est entre les bases de données et les fichiers plats, j'opterais pour une base de données en raison de problèmes de simultanéité.

Un fichier que vous devez verrouiller pour lui ajouter une ligne, ce qui peut entraîner l'échec de l'écriture de ses messages par d'autres scripts.

Dans une solution basée sur une base de données, vous pouvez travailler avec un enregistrement pour chaque message. L'enregistrement contiendrait un identifiant unique, le destinataire et le message. Le script du destinataire peut facilement interroger les nouveaux messages et, après lecture, supprimer rapidement et en toute sécurité l'enregistrement en question.

+0

Merci beaucoup! Exactement la réponse que je cherchais, et oui, je préférerais un DB au lieu de la mémoire partagée, puisque les données persisteraient quoi qu'il arrive à la machine. –

+0

@Jeremy: Exactement ce que tu cherchais? :) –

2

Il est difficile de répondre sans le savoir:

  • Combien de données qu'ils envoient dans chaque message (2 octets ou 4 méga-octets)?
  • Couriront-ils dans la même machine? (Cela ressemble à un oui, sinon vous ne considéreriez pas la mémoire partagée)
  • Quelles sont les exigences de performance (un message par minute ou un zillion par seconde)?
  • Quelle est la ressource la plus importante pour vous?

Et ainsi de suite ...

L'utilisation d'un DB est probablement plus facile à installer dans un environnement PHP et, selon le nombre de requêtes par minute et le type de ces requêtes, qui pourraient bien être la plus saine Solution. Personnellement, j'essaierais d'abord, puis je verrais si ce n'est pas suffisant.

Mais, encore une fois, difficile à dire à coup sûr sans plus d'informations sur l'application.

Questions connexes