2012-11-14 153 views
0

我有一個執行php腳本的bash腳本。我的bash知識很差,我需要執行該PHP腳本大約100次。我只是複製粘貼執行線:執行PHP腳本8次後Bash腳本停止

#!/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); 

?> 
+0

也許傳遞第四個參數,'100'腳本調用異步的,只是做一個呼叫使用' – Esailija

+0

檢查ps -ef' PHP的how.many實例在最後還活着 –

+0

@Esailija :) nope :) 1,2,3每行都是不同的。但其價值不會影響執行的停止。我混合了他們幾次,並取而代之 - 仍然是相同的結果。 @Cthulhu'ps -ef'在停止之後沒有活動php實例。 – GeekSince1982

回答

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腳本,並檢查日誌中8個呼叫,看看發生了什麼。如果要求沒有停止呼叫(即使其中一個出現故障),那麼您就可以使用

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

太棒了!感謝您的循環建議。關於PHP的打印輸出 - 它們確實存在。因爲在PHP裏面也有循環,我回應了每個循環的完成。一切似乎都很好。沒有錯誤,什麼也沒有,只要第8次執行完成= bash掛起:( – GeekSince1982

+0

查看@Cthulhu的評論,在8次調用之後查看php的活動實例。你可以發佈php代碼嗎? – higuaro

+0

Cthulhu評論沒有幫助很多不幸的是,在帖子中添加了php腳本 – GeekSince1982