2010-11-18 1 views
1

좋아, 어떻게하는지 잘 모르겠습니다. 일부 URL을 통해 루프 PHP 스크립트가 있습니다. 다음이bash를 사용하여 PHP 스크립트를 쓰레드로 만들 수 있습니다.

COMCHECK=`ps aux | grep -c php` 

while [ $COMCHECK -ge 150 ];do 
COMCHECK=`ps aux | grep -c php` 
echo "Sleeping" 
sleep 5 

와 같은, 내가 5 초 동안 자고 싶어, URL은 urls.txt에 저장되며, 그것이 일련의 프로세스 수에 도달하면 php urlcheck.php LINE_FROM_urls.txt

같은 PHP 스크립트를 호출해야 다시 확인하고 싶습니다. 그것의 -le 150, 다음 url 등등을 달려라.

나는 이것을 어떻게하는지 모른다. 내 bash는 놀랍게도 제한적이고, 솔직히 말하면 언어는 나를 괴롭힌다.

어떤 도움이 필요합니까?

답변

1

당신은 같은 것을 시도 할 수 있습니다 : 이것은 속임수를 썼는지

limit=150 

# read lines from the file urls.txt one by one. 
while read line; do 

     # check number of running php processes. 
     while [ $(ps aux | grep -c php) -ge $limit ];do 
       # if it's >= limit..sleep. 
       echo "Sleeping"  
       sleep 5 
     done 

     # limit not reached..run another process..in background. 
     php urlcheck.php $line & 

done < urls.txt 
+0

, 그리고 아주 잘 나는 추가 할 수 있습니다. 또한, 당신의 코드는 매우 멋져 보인다. <3 PHP 파일에서 오류 등을 출력하는 것을 막을 수있는 방법이 있습니까? – Rob

+0

PHP로 인한 오류를 제거하려면'php urlcheck.php $ line &'을'php urlcheck.php $ line 2>/dev/null &' – codaddict

+0

<3 – Rob

1
while read URL; do 
    while (($(ps aux | grep -c php) >= 150)); do 
     sleep 5 
    done 

    php urlcheck.php "$URL" & 
done < urls.txt 

# Optional: wait for all PHP processes to finish. 
wait