Bir PHP komut satırı komut dosyası tek bir sayısal değişken dışında dizi argüman potansiyel olarak sonsuz sayıda geçmek

2 Cevap php

Ben argümanlar olarak komut satırından URL potansiyel sonsuz sayıda alacak bir PHP komut dosyası yapmaya çalışıyorum. Ben de sadece, örneğin, (zaman aşımı belirtmek için) mümkün olan tek bir sayısal değeri olan bir argüman geçmek gerekir:

./urltest.php 60 url1.com url2.com url3.com

Ben aynı zamanda argümanlar (URL'ler yani liste) kalan bir diziye devam ederken [1] tek bir sayısal değişken olarak argv belirtmek için nasıl tam olarak emin değilim. Belki bir şey gibi:

$timeout = $argv[1];
$args = func_get_args();    

function numfilter($num) {
    return !is_numeric($num);
}

$urls = array_filters($args, 'numfilter');

?

Şimdiden teşekkürler!

2 Cevap

Sana func_get_args istediğini sanmıyorum. Bu akım fonksiyonu için tüm argümanları almak için. Bu komut satırı ile ilgisi yoktur. Ben bunu gibi bir şey yapmak istiyorum

//i don't like altering the global $argv
$urls    = $argv;

//take off the first element of the array, leaving only urls
$script = array_shift($argv); //shift off script name, per other post :)
$timeout = array_shift($urls); 
if(!is_numeric($timeout)) exit ("First argument was not a number") //array_shift always makes me break out perl style, so this however you want
//your $urls variable now contains an array with arguments 2 - n

Argv [0] senaryonun adı olacaktır, çünkü array_shift iki çağrı yapmak için emin olun.