Gearman worker manager (gwm)
Менеджер для работников PHP Gearman.
Может запускать и управлять несколькими работниками Gearman, можно установить максимальное время выполнения для каждого работника и максимальное количество выполнений заданий после достижения установленного значения. Работник автоматически перезапустит процесс, предотвращая зависание.
Рекомендуется ознакомиться с проектом brianlmoon/GearmanManager. Большое спасибо за этот проект.
Дополнительные функции:
start
, reload
, restart
, stop
и status
.Поддерживается только система Linux, требуется включить
pcntl
иposix
.
// start
php bin/manager.php
// run as daemon
php bin/manager.php --daemon
php bin/manager.php stop
php bin/manager.php restart
// see help info
php bin/manager.php --help
// print manager config info
php bin/manager.php -D
// jobs status
php bin/manager.php status
php bin/manager.php status --cmd status
// workers status
php bin/manager.php status --cmd workers
Используйте php examples/gwm.php -h
, чтобы увидеть все команды и опции.
root@php5-dev:/var/www/phplang/library/gearman-manager# php examples/gwm.php -h
Gearman worker manager(gwm) script tool. Version 0.1.0
USAGE:
php examples/gwm.php {COMMAND} -c CONFIG [-v LEVEL] [-l LOG_FILE] [-d] [-w] [-p PID_FILE]
php examples/gwm.php -h
php examples/gwm.php -D
COMMANDS:
start Start gearman worker manager(default)
stop Stop running's gearman worker manager
restart Restart running's gearman worker manager
reload Reload all running workers of the manager
status Get gearman worker manager runtime status
SPECIAL OPTIONS:
start/restart
-w,--watch Automatically watch and reload when 'loader_file' has been modify
-d,--daemon Daemon, detach and run in the background
--jobs Only register the assigned jobs, multi job name separated by commas(',')
--no-test Not add test handler, when job name prefix is 'test'.(eg: test_job)
status
--cmd COMMAND Send command when connect to the job server. allow:status,workers.(default:status)
--watch-status Watch status command, will auto refresh status.
PUBLIC OPTIONS:
-c CONFIG Load a custom worker manager configuration file
-s HOST[:PORT] Connect to server HOST and optional PORT, multi server separated by commas(',')
-n NUMBER Start NUMBER workers that do all jobs
-u USERNAME Run workers as USERNAME
-g GROUP_NAME Run workers as user's GROUP NAME
-l LOG_FILE Log output to LOG_FILE or use keyword 'syslog' for syslog support
-p PID_FILE File to write master process ID out to
-r NUMBER Maximum run job iterations per worker
-x SECONDS Maximum seconds for a worker to live
-t SECONDS Number of seconds gearmand server should wait for a worker to complete work before timing out
-v [LEVEL] Increase verbosity level by one. (eg: -v vv | -v vvv)
-h,--help Shows this help information
-V,--version Display the version of the manager
-D,--dump [all] Parse the command line and config file then dump it to the screen and exit.
Можно добавить обработчик заданий, используя функцию, замыкание или класс.
Класс или объект должен быть классом, реализующим __invoke()
или интерфейсом inhere\gearman\jobs\JobInterface
.
job_handlers.php
/**
* a class implement the '__invoke()'
*/
class TestJob
{
public function __invoke($workload, \GearmanJob $job)
{
echo "from TestJob, call by __invoke";
}
}
// add job handlers
$mgr->addHandler('reverse_string', function ($string, \GearmanJob $job)
{
$result = strrev($string);
echo "Result: $result\n";
return $result;
});
$mgr->addHandler('test_job', TestJob::class); // Используйте класс, реализующий интерфейс `inhere\gearman\jobs\JobInterface`, добавьте некоторые опции для задания.
$mgr->addHandler('echo_job', \inhere\gearman\examples\jobs\EchoJob::class, [
'worker_num' => 2,
'focus_on' => 1,
]);
inhere\gearman\Job
/**
* Класс EchoJob
* @package inhere\gearman\jobs
*/
class EchoJob extends Job
{
/**
* {@inheritDoc}
*/
protected function doRun($workload, \GearmanJob $job)
{
echo "receive: $workload";
}
}
Используйте команду php gwm.php -h
для получения дополнительной информации о помощи.
Запустите: php gwm.php
Вы можете увидеть информацию о сервере, заданиях и работниках с помощью встроенного инструмента.
Выполните:
bash server.sh
// ИЛИ
php -S 127.0.0.1:5888 -t web
Откройте URL http://127.0.0.1:5888
— информация о сервере и заданиях;
— просмотр журнала;
BSD
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )