0

Цикличное выполнение скрипта с интервалом

Иногда нужно выполнять скрипт/команду циклично с интервалом, в этом поможет команда watch.

Например, для вывода данных о температуре с интервалом в две секунды (по-умолчанию):

Для изменения интервала:

Для отслеживания изменений в выводе:

Пример вывода:

0

Отладка консольного приложения php на примере yiic

Когда встает вопрос отладки кода скрипта php запущенного в режиме командной строки многие впадают в ступор.

Разберем на небольшом примере отладку консольной команды фреймворка yii (CConsoleCommand).

Для того, чтобы xdebug на сервере смог подключиться к клиенту для обмена отладочной информацией текущей сессии, нужно установить или передать индивидуальные параметры xdebug в php запущенный в режиме CLI SAPI.

К примеру, для отладки консольной команды yii, можно создать простой скрипт, который при запуске установит параметры xdebug модуля в систему и запустит yiic:

Разберем более детально,
Read more

1

Запуск исполняемых файлов без прав sudo (суперпользователя)

Иногда стоит задача запускать некоторые процессы в *nix среде под правами root (суперпользователя) не имея таких прав.

Это может пригодиться, например в хостинге для перезагрузки сервисов (httpd, mysqld, memcached, etc.) или, как в нашем случае — запуск автотестов (phphunit) под пользователем apache не имея прав sudo для установки пользователя под которым запускать программу.

Предыстория:

Когда у нас появились подрядчики, которые помогали нам разрабатывать услугу — мы выделили им виртуальные хосты и пользователей, которые, по понятным причинам не имели прав суперпользователя. Также наш регламент предписывает тестировать сборку автотестами, которые запускались с командной строки. Некоторые автотесты производили тестирование модуля генерации документов, которые складывались в несколько папок. Вот тут и пришла проблема, которую мы не ждали: при использовании модуля пользователем — файлы и папки создавались с владельцем apache с правами 755, тогда как при запуске автотестов — с владельцем текущего авторизованного пользователя системы, т.к. он запускает phpunit из командной строки, после чего, пользователь уже не может записать файл в папку, созданную автотестом.

Конечно, запустить что-либо в unix под другим пользователем не проблема и легко решается через явное указание пользователя под которым нужно запустить приложение:

но для выполнение такой команды нужны права суперпользователя, которых нет у пользователей подрядчика.

Таким образом, после курения гугла и мануалов пришли к единственному рабочему решению для нас: написать бинарник, который используя s-бит, может быть запущен под правами root, пользователем, у которого таких прав нет.

Собственно, нижепредставленный код, устанавливает, на время выполнения, пользователя root (setuid(0)) и собирая аргументы для запуска, выполняет запуск автотестов под пользователем apache.

Его можно модифицировать под свои нужды:

Read more

0

Установка Zend OPcache

Zend OPcache обеспечивает более быстрое выполнение PHP кода операции через кэширование и оптимизацию. Он улучшает PHP производительность, сохраняя скомпилированные сценариев байт-кода в разделяемой памяти. Zend OPcache включен в PHP 5.5 по умолчанию, если же у вас более старая версия, OPcache стоит установить.

Установка на CentOS

Установка PECL

Установка пакетов по зависимостям

Скачиваем с сайта http://pecl.php.net/package/ZendOpcache пакет для установки

Установка Zend OPcache как пакет PECL

После установки добавляем строку zend_extension=/usr/lib64/php/modules/opcache.so в файл /etc/php.d/opcache.ini

Перезапускаем вебсервер Apache

Оптимальные настройки по умолчанию

По рекомендации разработчиков, оптимальные настройки, которые можно выставить первоначально следующие:

Read more

0

Установка переменной среды окружения Linux

Для вывода всех переменных среды окружения можно использовать команду:

Для просмотра текущего содержимого переменной PATH грепнем вывод:

Для того, чтобы добавить очередной путь в переменную PATH:

Литера $PATH будет содержать текущее содержимое PATH, а несколько путей разделяются двоеточием между собой (после последнего пути двоеточие не ставится)

В Ubuntu, для того, чтобы переменная автоматически устанавливалась при запуске системы, отредактируем .bashrc редактором vi или любым другим удобным:

Дополнить строчками: