プロが教えるわが家の防犯対策術!

こんにちは。いつもお世話になっております。
使用しているOSは、CentOS6です。

echo1.php
echo2.php
echo3.php
echo4.php

という4つのPHPがあります。このPHPファイルをVPS上の/usr/bin/phpで処理したいのですが、一つ一つのPHPファイルは処理に1日かかります。(つまりすべて終了するまでに4日かかります)

また、echo2.phpは処理を行うのにecho1.phpのデータを、同様にecho3.phpはecho2.php、echo4.phpはecho3.phpのデータを必要とします。

そこで前の処理が終わったら、自動で次の処理をするように設定したいのですが、現在の接続環境は不安定であるため、ログアウト後も処理を継続するようにしたいです。

execで実行後に次のファイルを実行しようと思ったり、cronで余裕をもって2日ごとに処理を行うように書こうとも思いましたが、もっとスマートに、コマンドで順番にログアウト後も処理を実行するよう指示する方法はないものでしょうか。

どなたかご教示の方、どうかよろしくお願いします。

A 回答 (3件)

nohupを使って実行すれば切断しても継続できます。



例えば
echo1.php
echo2.php
echo3.php
echo4.php
を書き込んだテキストファイル(exec.sh)を作成し、
nohup bash <exec.sh &
で順番に実行できます。
標準出力などはnohup.outに書き込まれます。

また、このような長時間実行にかかるプログラムを実行するときにはtorqueを使うと、順次実行できます。
本来は、複数のコンピュータを実行状況を見て順次処理するのに使われますが、1つのパソコンでも十分役立つと思います。
私のところではこれで十数台をコントロールしています。
http://www.adaptivecomputing.com/products/open-s …
    • good
    • 0

#!/usr/bin/sh


echo1.php
echo2.php
echo3.php
echo4.php

みたいなシェルスクリプトにすれば、順番に実行しますよね。
(echo1.php ; echo2.php ;echo3.php ;echo4.php)
と1行にも書けます。
echo1.php && echo2.php && echo3.php && echo4.php
と、「前のコマンドが正常終了したら」としてもよいでしょう


> 現在の接続環境は不安定であるため、ログアウト後も処理を継続するようにしたいです。

この目的なら、 tscreenやGNU screenやtmuxといったツールを使う、という方法もあります


なお、私なら、まず最初に、1日もかかる処理が、本当に1日かけなければならないものなのかを調べ、可能なら対策したプログラムにします。
    • good
    • 0

phpにもあったと思うが、まあ標準のシェルで作成したほうがいいでしょう



https://www.google.co.jp/search?hl=ja&q=Sujinosu …

この辺りは、覚えておいた損はない。


>もっとスマートに、コマンドで順番にロ

それは、スマートとは言わない。もともとPHPで作成すること事態、スマートではない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!