В пхп знаю как замерять время, вот в шелле незнаю и в гугле не знал как вопрос задать, поэтмоу сорри за такой глупый вопрос
Есть два скрипта
#!/bin/sh
cp somedir somewhere
#!/usr/bin/php
<?
exec("cp somedir somewhere");
?>
Какой из них быстрее отработает?А если там будет mysqldump дампить 1к баз? Или в данной реализации это не имеет существенного значения?
Под данной реализацией подразумеваю, что все действия в php скрипте выполняются через системный вызов exec(), на самом пхп реализуются только циклы/условия/обьявления переменных и тп.
И еще маленький вопросик - php script.php -k somevalue
Ключ k как в скрипте отловить?
php vs /bin/sh
Модератор: Модераторы разделов
-
pcodr
- Сообщения: 283
- ОС: Debian
Re: php vs /bin/sh
В пхп знаю как замерять время, вот в шелле незнаю и в гугле не знал как вопрос задать, поэтмоу сорри за такой глупый вопрос
А как вы в 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
-
snikolaev
- Сообщения: 195
- ОС: Все подряд
Re: php vs /bin/sh
pcodr
В скрипте копируются папки юзеров (большие), дампятся базы данных, затем все архивируется. Размер исходного bz2 - 2620m.
Скрипт на пхп, рабочее время чуть более часа. Его аналог на шелле сможет отработать быстрее?
Повторюсь, все внешние действия вызываются через exec()
через argv[n] ловить умею, интересуют именно передача через ключи
за что люблю линукс, там все решается маленькой командой )) Вот только полдня ее искать можно, это минус(
Код: Выделить всё
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";В скрипте копируются папки юзеров (большие), дампятся базы данных, затем все архивируется. Размер исходного bz2 - 2620m.
Скрипт на пхп, рабочее время чуть более часа. Его аналог на шелле сможет отработать быстрее?
Повторюсь, все внешние действия вызываются через exec()
через argv[n] ловить умею, интересуют именно передача через ключи
за что люблю линукс, там все решается маленькой командой )) Вот только полдня ее искать можно, это минус(
-
pcodr
- Сообщения: 283
- ОС: Debian
Re: php vs /bin/sh
В скрипте копируются папки юзеров (большие), дампятся базы данных, затем все архивируется. Размер исходного 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
пхп выбран по одной простой причине - не умею письма отсылать из шелла ((
из пхп mail(), из шелла подозреваю что наверно sendmail
за линк спасибо, похоже оно и есть
еще один вопросик - а как в шеллскрипте отлавливать ключи? )
-
pcodr
- Сообщения: 283
- ОС: Debian
Re: php vs /bin/sh
из пхп mail(), из шелла подозреваю что наверно sendmail
echo "text of the message" | mail -s "message subject" root@root.ws
еще один вопросик - а как в шеллскрипте отлавливать ключи? )
Аналогично, man getopt
remote system type is unix
-
snikolaev
- Сообщения: 195
- ОС: Все подряд
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: php vs /bin/sh
-
pcodr
- Сообщения: 283
- ОС: Debian
Re: php vs /bin/sh
А аттач в тело письма получится прикрепить?
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