2011-10-30 11 views
3

私は毎晩実行するcrontabにいくつかのPHPスクリプトを持ち、お互いに関連していないし、私が知っているリソースを共有していません。彼らは同時に起動し、同時にそれぞれ独自のタスクを実行する必要があります - しかし、それぞれのログを印刷するログからは、スレッドが1つしかないかのようにお互いを待っているように見えます。 cronプロセスは、一度に1つのプロセスのみを実行させるという方法はありますか。そうであれば、どうすればそれらを並行して実行できますか?不要なcronロッキング

編集:私は 'フォアグラウンド'でcron命令を実行していますが、各行の後に&を置くのに違いがあるかどうかを知っていますか?

+1

)と実行しますxdebugを超えて、 'strace'があなたのシステムで利用可能なら、実行中のcronにアタッチし、何が起きているかを調べるために使うことができます。' strace -fv -ocron.out -p $(pidof cron) 'を呼び出し、後でctrl-Cで終了します。 –

答えて

1

おそらく、スクリプトがお互いに完了するのを待っているロックがあります。

ロックを引き起こす可能性のある同じテーブル上でデータベース操作を行っていますか? (おそらくそれぞれにxdebugのを投げると、時間がかかりすぎているかを確認するためにそれらをプロファイルでき

は、ここではXdebugプロファイラの詳細情報を参照してください:。(cronのための標準的な動作は、ダブルフォークにあるhttp://xdebug.org/docs/profiler