Comments 13
Извините, но в приличном обществе за такой код бьют по рукам.
Да, вы написали:
С другой стороны, этот код — почти половина статьи.
То есть, вы как бы говорите: у меня полстатьи не очень.
Если можно написать правильнее, то почему бы и не написать? Сами же потом разбираться в нем будете.
Да, вы написали:
По поводу модуля — можно много чего правильней написать, но делался он для того чтобы работать а не для красоты.
С другой стороны, этот код — почти половина статьи.
То есть, вы как бы говорите: у меня полстатьи не очень.
Если можно написать правильнее, то почему бы и не написать? Сами же потом разбираться в нем будете.
Код делался максимально простой для понимания и расширения (увеличения) версий для переключения.
Это сложно назвать простым кодом. Практически все тут направлено на нарушение принципа DRY.
Код
повторяется во всех условиях. При этом отличие одного блока от другого только в пути и в переменной. Не проще было сделать switch/case с нужными версиями (или проверку версии в заранее заданном массиве) и объявить функцию change_version?
Что-то вроде:
Код PHP, с перлом не знаком, но конструкция switch/case там точно есть.
Вместо этого вы даже поленились убрать закомментированный устаревший код.
Код
system ("chflags noschg $defhomedir/php-bin/$user/php");
system ("echo '#!/usr/local/php/55/bin/php-cgi' > $defhomedir/php-bin/$user/php");
system ("chflags schg $defhomedir/php-bin/$user/php");
system ("pkill -9 -u $user");
$newphpver1 = 5500;
повторяется во всех условиях. При этом отличие одного блока от другого только в пути и в переменной. Не проще было сделать switch/case с нужными версиями (или проверку версии в заранее заданном массиве) и объявить функцию change_version?
Что-то вроде:
switch ($newphpversion) {
case 5.4:
case 5.3:
...
change_version($newphpversion);
break;
default:
throw new Exception("Unknown version");
}
Код PHP, с перлом не знаком, но конструкция switch/case там точно есть.
Вместо этого вы даже поленились убрать закомментированный устаревший код.
switch/case в языке нету, к сожалению. Только модулями.
А массивы? И поиск по значению?
Что-то типа питоновского:
Что-то типа питоновского:
available_versions = [5.1, 5.2, 5.3, 5.4]
if newphpversion in array:
change_version(version = newphpversion)
else:
raise("Unknown version")
Поиска в массиве стандартно нету, но обычно реализуется хэшем, например, так:
my $available_versions = { "5.1" => 1, "5.2" => 1, "5.3" => 1, "5.4" => 1 } my $required_version = "5.4" А потом: if ( defined $available_versions->{ $required_version } ) { } else { }
Закомментированные строки оставлены преднамеренно. Чтобы при отладке на сервере можно было вывести во временный файл логов нужные переменные и отслеживать обработку.
По поводу сделать switch/case это ближе кодерам а не админам. Админам проще видеть команды CLI, которые выполняются. Многие хостеры не имея аналогичного модуля просто вручную переключат версии подменой враппера.
По поводу сделать switch/case это ближе кодерам а не админам. Админам проще видеть команды CLI, которые выполняются. Многие хостеры не имея аналогичного модуля просто вручную переключат версии подменой враппера.
Да пусть они живут у вас, эти строки. При публикации статьи-то их можно было удалить, ценности они не несут. Кто захочет отладочную информацию — поставит их сам.
А любой хороший админ, имхо, и так должен быть немножко кодером, капельку бухгалтером, хорошим эникеем и немножко волшебником.
А любой хороший админ, имхо, и так должен быть немножко кодером, капельку бухгалтером, хорошим эникеем и немножко волшебником.
За Perl код без use strict или use warnings нужно линчевать.
Для тех, кто будет искать через поисковик — в версии ISPmanager Lite PHP selector доступен начиная с версии 5.30
Вот новость на сайте компании https://www.ispsystem.ru/news/php-selector
Вот новость на сайте компании https://www.ispsystem.ru/news/php-selector
Sign up to leave a comment.
Модуль переключения версий PHP для ISPmanager