ping
9 отговора
514 прегледа
ping
Здравейте. Питането е следното. Мога ли от PHP да си извикам ping (например) и да покажа резултата. Мерси на всички предарително.
Re: ping
$ping_results = `ping clubs.dir.bg`;
Само внимавай под UNIX...там ping се изпълнява until stopped.
Everything louder than everything else...
Само внимавай под UNIX...там ping се изпълнява until stopped.
Everything louder than everything else...
Re: ping
> $ping_results = `ping clubs.dir.bg`;
oh kak si lichi koi ne raboti s *nix i pipes
dakota, izlagash se.
[ping.php]
echo '<pre>';
$fp = popen('/bin/ping -c1 '. escapeshellarg($_GET['host']), 'r');
print (fread($fp, 20000));
pclose($fp);
vij si syntax-a na 'ping' pod win32.
oh kak si lichi koi ne raboti s *nix i pipes
dakota, izlagash se.
[ping.php]
echo '<pre>';
$fp = popen('/bin/ping -c1 '. escapeshellarg($_GET['host']), 'r');
print (fread($fp, 20000));
pclose($fp);
vij si syntax-a na 'ping' pod win32.
много оригинално
Да...когато можеш да напишеш нещо на един ред, къде къде по-оригинално е и по-престижно е да го напишеш на 3, само и само да използваш pipes. Браво. Браво!!!
Виж ако беше и по-бързо, нямаше да е зле.
Иначе можеше още да се постараеш. Да напишеш клас, да използваш побитови оператори...така щеше да можеш да ме обвиниш и в тяхното непознаване.
Everything louder than everything else...
Виж ако беше и по-бързо, нямаше да е зле.
Иначе можеше още да се постараеш. Да напишеш клас, да използваш побитови оператори...така щеше да можеш да ме обвиниш и в тяхното непознаване.
Everything louder than everything else...
Редактирано от Dakota на
Re: много оригинално
e, mnogo se palish. az si znam che si poznavach, no ako mojeshe vmesto prazni dumi da podkrepish s neshto po-dostoverno tova, koeto se opitvash da me nakarash da poviarvam...niamashe da mi se nalaga da pisha i tova.
$ cat dakota
<?
$ping_results = `ping -c1 127.0.0.1`;
echo $ping_results;
?>
$ cat orange
<?
$fp = popen('/bin/ping -c1 127.0.0.1', 'r'); // host=localhost
print (fread($fp, 2000));
pclose($fp);
?>
$ time php -q dakota &> /dev/null
real 0m0.025s
user 0m0.000s
sys 0m0.030s
$ time php -q orange &> /dev/null
real 0m0.025s
user 0m0.010s
sys 0m0.020s
sega, vijdash sam, ne si prav. moje da ima poveche redove, no tova
koeto ti si napisal izglejda neprofesionalno, da ne kaja amatiorsko. a
da ima chovek samo niakakvi pretencii ne e dostatychno, kakto sam znaesh.
i kakto si go napisal bez echo() ili print_r(), resultat ne se display-va, pone pri *nix.
sega, zashto toia red
$fp = popen('/bin/ping -c1 '. escapeshellarg($_GET['host']), 'r');
e vajen. taka kakto si go izmislil s `ping clubs.dir.bg`, ako chovekyt ne syobrazi
kakvo da pravi i zameni "clubs.dir.bg" s POST/GET var stava kristalno iasno che shte
sgafi, osobeno ako iska da pravi ot neshtoto niakakyv vid public service. varianyt, koito
predlagam e izchisten ot takyv rod problemi i pokazva po nagledno kakvo se
sluchva. oshte edin pyt, tova koeto pravish e myrzelashko izpylnenie. a i e mecheshka usluga erotomane, zatova se namesih. za dobro e, nezavisimo kakvo na teb ti se struvalo.
$ cat dakota
<?
$ping_results = `ping -c1 127.0.0.1`;
echo $ping_results;
?>
$ cat orange
<?
$fp = popen('/bin/ping -c1 127.0.0.1', 'r'); // host=localhost
print (fread($fp, 2000));
pclose($fp);
?>
$ time php -q dakota &> /dev/null
real 0m0.025s
user 0m0.000s
sys 0m0.030s
$ time php -q orange &> /dev/null
real 0m0.025s
user 0m0.010s
sys 0m0.020s
sega, vijdash sam, ne si prav. moje da ima poveche redove, no tova
koeto ti si napisal izglejda neprofesionalno, da ne kaja amatiorsko. a
da ima chovek samo niakakvi pretencii ne e dostatychno, kakto sam znaesh.
i kakto si go napisal bez echo() ili print_r(), resultat ne se display-va, pone pri *nix.
sega, zashto toia red
$fp = popen('/bin/ping -c1 '. escapeshellarg($_GET['host']), 'r');
e vajen. taka kakto si go izmislil s `ping clubs.dir.bg`, ako chovekyt ne syobrazi
kakvo da pravi i zameni "clubs.dir.bg" s POST/GET var stava kristalno iasno che shte
sgafi, osobeno ako iska da pravi ot neshtoto niakakyv vid public service. varianyt, koito
predlagam e izchisten ot takyv rod problemi i pokazva po nagledno kakvo se
sluchva. oshte edin pyt, tova koeto pravish e myrzelashko izpylnenie. a i e mecheshka usluga erotomane, zatova se namesih. za dobro e, nezavisimo kakvo na teb ti se struvalo.
мързелашко изпълнение
Естествено, че е мързелашко изпълнение...PHP е език от високо ниво и целта на създаването му е да облекчи живота на програмиста - да пишеш, колкото се може по-малко. Ако исках "не-мързелашко" изпълнение, щях да пиша на C, вместо на PHP или Perl. Именно затова е безсмислено и рисковано да се занимаваш с pipes на ниво PHP (освен ако нямаш друг избор), при положение, че всичко минава през C. Най-вероятно и двата кода - и моят и твоят, се превръщат в едно и също нещо от интерпретатора. За това говори и минималната разлика във времето за изпълнение на двата скрипта...е, аз направих малко по-обемни тестове:
$ cat dakota.php
<?
for ($i=0; $i<1000; $i++) echo `ping -c1 127.0.0.1`;
?>
$ cat orange.php
<?
?>
$ for i in 1 2 3; do time php -q dakota.php > /dev/null; done
real 0m15.765s
user 0m2.693s
sys 0m2.432s
real 0m10.837s
user 0m2.822s
sys 0m2.330s
real 0m9.302s
user 0m2.797s
sys 0m2.334s
$ for i in 1 2 3; do time php -q orange.php > /dev/null; done
real 0m16.482s
user 0m2.924s
sys 0m2.244s
real 0m11.530s
user 0m2.846s
sys 0m2.293s
real 0m15.313s
user 0m2.744s
sys 0m2.389s
Машината е доста натоварена, така че това не може да бъде много показателно...както се вижда и от различните резултати per script.
Не мога да се съглася и че твоят скрипт бил кристално ясен. Първо, както си го написал, той няма да работи под Windows; второ, ако аз съм newbie в PHP (а ако не съм, няма да питам за такова нещо) нито ще знам какво е $_GET['host'], нито ще съобразя, че трябва да имам променлива, задължително предадена по метода GET, нито как да се казва тази променлива, нито как трябва да извикам скрипта, за да сработи въобще.
Освен това в дадения контекст, да говорим за скорост е смешно - потребителят ще изпълнява ping, което може да отнеме дори и десетки секунди...
Така или иначе, целта ми не е да доказвам, че скриптът ми е по-бърз или по-добър...нека човекът, който помоли за помощ сам да избере решението, което ще му свърши работа. Но да се нахвърляш върху мен с някакви твои си доводи е леко тъпо...
Та...смятам темата за приключена. Благодаря ти за мечешката услуга!
Everything louder than everything else...
$ cat dakota.php
<?
for ($i=0; $i<1000; $i++) echo `ping -c1 127.0.0.1`;
?>
$ cat orange.php
<?
for ($i=0; $i<1000; $i++) {
$fp = popen('ping -c1 127.0.0.1', 'r');
print (fread($fp, 2000));
pclose($fp);
}
?>
$ for i in 1 2 3; do time php -q dakota.php > /dev/null; done
real 0m15.765s
user 0m2.693s
sys 0m2.432s
real 0m10.837s
user 0m2.822s
sys 0m2.330s
real 0m9.302s
user 0m2.797s
sys 0m2.334s
$ for i in 1 2 3; do time php -q orange.php > /dev/null; done
real 0m16.482s
user 0m2.924s
sys 0m2.244s
real 0m11.530s
user 0m2.846s
sys 0m2.293s
real 0m15.313s
user 0m2.744s
sys 0m2.389s
Машината е доста натоварена, така че това не може да бъде много показателно...както се вижда и от различните резултати per script.
Не мога да се съглася и че твоят скрипт бил кристално ясен. Първо, както си го написал, той няма да работи под Windows; второ, ако аз съм newbie в PHP (а ако не съм, няма да питам за такова нещо) нито ще знам какво е $_GET['host'], нито ще съобразя, че трябва да имам променлива, задължително предадена по метода GET, нито как да се казва тази променлива, нито как трябва да извикам скрипта, за да сработи въобще.
Освен това в дадения контекст, да говорим за скорост е смешно - потребителят ще изпълнява ping, което може да отнеме дори и десетки секунди...
Така или иначе, целта ми не е да доказвам, че скриптът ми е по-бърз или по-добър...нека човекът, който помоли за помощ сам да избере решението, което ще му свърши работа. Но да се нахвърляш върху мен с някакви твои си доводи е леко тъпо...
Та...смятам темата за приключена. Благодаря ти за мечешката услуга!
Everything louder than everything else...