0

PHPスクリプトを実行しているbashスクリプトがあります。私の bash の知識は乏しく、その PHP スクリプトを約 100 回実行する必要があります。実行行をコピーして貼り付けるだけです。

#!/bin/bash
php /home/me/public_html/script/stats.php 1 2 3
php /home/me/public_html/script/stats.php 1 2 3
php /home/me/public_html/script/stats.php 1 2 3
...

1,2,3 は、php スクリプトに渡す引数です。

すべて正常に動作しますが、8 行目以降で bash スクリプトがハングし、次に実行されません。だからまた再開しないといけない。

何が間違っている可能性がありますか?

UPD

PHP (完全なスクリプトではなく、一般的な考え方)

コマンドライン引数を取得することから始めます。それらを msql クエリで使用する関数に渡します。msql クエリのすべての結果は、その結果を使用して URL を形成する別の関数に渡され、そこからカンマ区切りの文字列を取得し、それを処理して配列に分割し、別のテーブルに挿入します。メイン関数が完了すると、msql リンクが閉じられ、スクリプトが終了します。

<?php
if (($argv[1] > 0) && ($argv[2] > 0) && ($argv[3] > 0)) {
echo "All good! Here we go: ";
echo "\n";
gatherstats($argv[1],$argv[2],$argv[3]);

} else {
echo "no\n";

}



function gatherstats($y,$m,$cl){ 

  Require 'db.php';
// SQL QUERY HERE AND A LOOP TO PROCESS RESULTS

//CALLS UP NEXT FUNCTION FOR EACH RESULT
 crawl($a,$b,$c);

}

function crawl($atr,$year,$month) { 

       //forms up specific url from passed vars and processes it

    }


  mysqli_close($link);

?>
4

1 に答える 1

1

たぶん、8番目のphpスクリプト呼び出しが何らかの理由でハングします。これを行うと、コマンドを100回入力しないようにできます。

for i in {1..100}; do
   php /home/me/public_html/script/stats.php 1 2 3 > some_log_file_$i.log
done

phpスクリプトにいくつかのprintステートメントを追加し、8呼び出しのログをチェックして、何が起こったかを確認します。要件が呼び出しを停止しないことである場合(1つが失敗した場合でも)、を使用してスクリプト呼び出しを非同期にすることができます

for i in {1..100}; do
   php /home/me/public_html/script/stats.php 1 2 3 > some_log_file_$i.log &
done
于 2012-11-14T23:24:10.797 に答える