代码之家  ›  专栏  ›  技术社区  ›  Rob

使用bash线程我的php脚本

  •  1
  • Rob  · 技术社区  · 15 年前

    好吧,我对怎么做很困惑。我有一个php脚本,可以循环访问一些url。URL存储在 urls.txt ,它需要像 php urlcheck.php LINE_FROM_urls.txt

    当它达到设定的进程数时,我希望它睡眠5秒,如下所示

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

    然后我想再检查一遍。如果是-le 150,运行下一个url等。

    我不知道怎么做。我的抨击是惊人的有限,坦率地说,语言让我很不舒服。

    有什么帮助吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   codaddict    15 年前

    你可以试试这样的方法:

    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
    
        2
  •  1
  •   John Kugelman Michael Hodel    15 年前
    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
    
    推荐文章