2011-10-30 3 views
3

J'ai plusieurs scripts PHP dans un crontab qui s'exécutent tous les soirs, ne sont pas liés les uns aux autres, et ne partagent aucune ressource que je suis au courant. Ils démarrent en même temps et doivent fonctionner simultanément, chacun faisant sa propre tâche - mais à partir des journaux qu'ils impriment chacun, je vois qu'il semble qu'ils s'interpénètrent comme si je n'avais qu'un fil. Y a-t-il un moyen que le processus cron laisse seulement courir l'un d'eux à la fois et si oui, comment puis-je les faire fonctionner en parallèle?cron locking non désirée

Edit: Je cours les instructions de cron dans le «premier plan» mais est-ce que quelqu'un sait si cela ferait une différence pour moi de mettre & après chaque ligne?

+1

Le comportement standard Cron est à fourche double() et exécutez commande en tant que petit-enfant. en dehors de xdebug au-delà, si 'strace' est disponible sur votre système, vous pouvez l'utiliser pour attacher au cron en cours d'exécution et d'examiner ce qui se passe. Utilisez une ligne de commande comme ceci' strace -fv -ocron.out -p $ (pidof cron) 'et le terminer avec ctrl-C plus tard. –

Répondre

1

Il y a probablement un verrouillage qui fait que les scripts attendent l'un l'autre pour finir. Exécutez-vous des opérations de base de données sur la même table qui pourraient provoquer des verrous? (Vous pourriez probablement jeter un xdebug à chacun et leur profil pour voir ce qui est trop long

Voir plus d'informations sur xdebug profileur ici. http://xdebug.org/docs/profiler