2010-10-21 7 views
0

J'ai deux processus en cours d'exécution dans différents scripts indépendants les uns des autres.PHP Flock et le fichier de téléchargement

  1. PHP # 1 script lit le nom d'un fichier et écrit à un DB
  2. PHP # 2 scripts télécharge le fichier

Je voudrais créer un troisième scénario (également indépendant) qui ne s'exécute qu'une fois que le script # 2 a terminé le téléchargement du fichier.

Je songe à utiliser la fonction flock de PHP pour déterminer si le fichier est verrouillé. J'imagine que le script n ° 3 devrait contenir une sorte de fonction de vérification du troupeau qui a été réglée sur une minuterie pour vérifier si le fichier a été déverrouillé, et si oui pour continuer.

Note: Un script # 3 connaîtrait le nom de fichier à perfom le chèque

Toutes les idées? Ce serait beaucoup plus simple si les fichiers pouvaient être chaînés, mais ils s'exécutent de manière indépendante.

+1

vous avez toutes l'idée. mettre en œuvre et revenir si rien bloquer :) – zod

+0

Lequel des fichiers pouvez-vous modifier? –

+0

juste le 3ème fichier –

Répondre

0

est le script 2 dans une page Web? Si oui, je renvoie un appel AJAX au serveur pour exécuter le script 3. La page ne peut pas rendre jusqu'à ce que le script est terminé, et une fois qu'il rend, il peut renvoyer l'appel au chargement de la page ...

+0

je peux être en mesure de restructurer un peu pour accomplir quelque chose comme ça. –

0

Je ne sais pas si le fichier est verrouillé tout le temps pendant qu'il est écrit à I ne dépendrait pas de cela.

Je vérifierais les changements dans la taille du fichier à intervalles (en conjonction avec flock). Et quand les fichiers cessent de croître, considérez qu'il a fini de télécharger.

Si vous avez le contrôle sur le 2ème script, il suffit de déclencher le 3ème quand il a fini l'exécution (``). Ou si ce n'est pas possible, utilisez un fichier ou quelque chose pour alimenter l'état de téléchargement de # 2 et pour le lire de # 3.

+0

Je pense que si j'avais juste un moyen efficace de vérifier si le fichier existe toutes les 5 secondes dans une boucle. Mais j'aurais besoin de la minuterie pour avoir un temps maximum donc ce n'est pas une boucle infinie. –

+0

+0

Je ne comprends pas où est le problème. Votre script d'attente vous va bien. –

Questions connexes