php vs /bin/sh

Модератор: Модераторы разделов

snikolaev
Сообщения: 195
ОС: Все подряд

php vs /bin/sh

Сообщение snikolaev »

В пхп знаю как замерять время, вот в шелле незнаю и в гугле не знал как вопрос задать, поэтмоу сорри за такой глупый вопрос

Есть два скрипта
#!/bin/sh
cp somedir somewhere

#!/usr/bin/php
<?
exec("cp somedir somewhere");
?>
Какой из них быстрее отработает?А если там будет mysqldump дампить 1к баз? Или в данной реализации это не имеет существенного значения?
Под данной реализацией подразумеваю, что все действия в php скрипте выполняются через системный вызов exec(), на самом пхп реализуются только циклы/условия/обьявления переменных и тп.

И еще маленький вопросик - php script.php -k somevalue
Ключ k как в скрипте отловить?
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: php vs /bin/sh

Сообщение pcodr »

В пхп знаю как замерять время, вот в шелле незнаю и в гугле не знал как вопрос задать, поэтмоу сорри за такой глупый вопрос

А как вы в php замеряете?

В шелле проще всего время измерить так: time cp somedir somewhere
Можно и так: a=`date +%s` && cp somedir somewhere && echo $((a-`date +%s`))

Какой из них быстрее отработает?А если там будет mysqldump дампить 1к баз? Или в данной реализации это не имеет существенного значения?

Думаю интерпретатор php запускается дольше чем sh, но вы этого не заметите, поэтому примерно одинаково

И еще маленький вопросик - php script.php -k somevalue
Ключ k как в скрипте отловить?

Все аргументы командной строки переданные php скрипту располагаются в массиве $argv, гляньте что выдает var_dump($argv) и станет все ясно.
Также для более продвинутого управления передаваемыми ключами существует функция getopt()
remote system type is unix
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: php vs /bin/sh

Сообщение IMB »

snikolaev писал(а):
29.04.2009 20:53
В пхп знаю как замерять время, вот в шелле незнаю и в гугле не знал как вопрос задать, поэтмоу сорри за такой глупый вопрос

Нет ничего проще - time.
Спасибо сказали:
snikolaev
Сообщения: 195
ОС: Все подряд

Re: php vs /bin/sh

Сообщение snikolaev »

pcodr

pcodr писал(а):
29.04.2009 21:06
А как вы в php замеряете?

Код: Выделить всё

function microtime_float(){
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
        }

$time_start = microtime_float();

blablabla

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "working time is $time seconds\n";

pcodr писал(а):
29.04.2009 21:06
Думаю интерпретатор php запускается дольше чем sh, но вы этого не заметите, поэтому примерно одинаково

В скрипте копируются папки юзеров (большие), дампятся базы данных, затем все архивируется. Размер исходного bz2 - 2620m.
Скрипт на пхп, рабочее время чуть более часа. Его аналог на шелле сможет отработать быстрее?
Повторюсь, все внешние действия вызываются через exec()

pcodr писал(а):
29.04.2009 21:06
располагаются в массиве $argv, гляньте что выдает var_dump($argv)

через argv[n] ловить умею, интересуют именно передача через ключи


IMB писал(а):
29.04.2009 21:16
Нет ничего проще - time.

за что люблю линукс, там все решается маленькой командой )) Вот только полдня ее искать можно, это минус(
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: php vs /bin/sh

Сообщение pcodr »

В скрипте копируются папки юзеров (большие), дампятся базы данных, затем все архивируется. Размер исходного bz2 - 2620m.
Скрипт на пхп, рабочее время чуть более часа. Его аналог на шелле сможет отработать быстрее?
Повторюсь, все внешние действия вызываются через exec()


Да не отработает он быстрее если вызываются одни и теже внешние команды.
Другое дело что такие действия гораздо удобнее писать на баше, чем на php.
Сравните:

Код: Выделить всё

cp from to
mysqldump ...
tar cvzf some.tar *


Код: Выделить всё

exec("cp from to");
exec("mysqldump ...");
exec("tar cvzf some.tar *");


Писать такое на php просто неестественно.

Код: Выделить всё

через argv[n] ловить умею, интересуют именно передача через ключи


Ну по ссылке на getopt() то сходите, там все это есть в примерах.
remote system type is unix
Спасибо сказали:
snikolaev
Сообщения: 195
ОС: Все подряд

Re: php vs /bin/sh

Сообщение snikolaev »

pcodr писал(а):
29.04.2009 21:33
Другое дело что такие действия гораздо удобнее писать на баше, чем на php.

пхп выбран по одной простой причине - не умею письма отсылать из шелла ((
из пхп mail(), из шелла подозреваю что наверно sendmail


pcodr писал(а):
29.04.2009 21:33
Ну по ссылке на getopt() то сходите, там все это есть в примерах.

за линк спасибо, похоже оно и есть
еще один вопросик - а как в шеллскрипте отлавливать ключи? )
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: php vs /bin/sh

Сообщение pcodr »

из пхп mail(), из шелла подозреваю что наверно sendmail

echo "text of the message" | mail -s "message subject" root@root.ws

еще один вопросик - а как в шеллскрипте отлавливать ключи? )


Аналогично, man getopt
remote system type is unix
Спасибо сказали:
snikolaev
Сообщения: 195
ОС: Все подряд

Re: php vs /bin/sh

Сообщение snikolaev »

pcodr писал(а):
29.04.2009 21:40
echo "text of the message" | mail -s "message subject" root@root.ws

ок, спасибо. А аттач в тело письма получится прикрепить?

pcodr писал(а):
29.04.2009 21:40
Аналогично, man getopt

Это для /bin/sh который пишется? Немогли бы пример привести?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: php vs /bin/sh

Сообщение IMB »

snikolaev писал(а):
29.04.2009 21:45
Это для /bin/sh который пишется? Немогли бы пример привести?

Ну сударь мой... http://www.google.com/search?q=bash+getopts+tutorial
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: php vs /bin/sh

Сообщение pcodr »

А аттач в тело письма получится прикрепить?


http://neverbow.blogspot.com/2006/12/send-...-app-under.html
http://linuxguruz.wordpress.com/2008/09/16...r-shell-prompt/
remote system type is unix
Спасибо сказали: