Skip to content
This repository was archived by the owner on Apr 22, 2026. It is now read-only.

Latest commit

 

History

History
172 lines (100 loc) · 8.42 KB

File metadata and controls

172 lines (100 loc) · 8.42 KB

Настраиваемые параметры


  1. Общая информация
  2. Настройки потока
  3. Статические настройки

1 - Общая информация

AzaThread гибко настраивается под любые ваши задачи. Есть два статических параметра, влиящих на все потоки и много параметров влияющих на каждый конкретный поток.

Стандартный способ задавать настройки - переопределить свойство класса:

class ExampleThread extends Thread
{
	protected $prefork = false; // Выключаем предварительную инициализацию
	function process()
	{
		// ...
	}
}

Второй вариант - передача настроек массивом. Этот способ предназначен для замыканий, но может использоваться и с обычными классами.

$thread = SimpleThread::create(function() {
	// ...
}, array(
	'timeoutMasterResultWait' => 15, // Устанавливаем таймаут на ожидание результата в 15 секунд
));
$thread = new ExampleThread(null, null, null, array(
	'timeoutMasterResultWait' => 15, // Устанавливаем таймаут на ожидание результата в 15 секунд
));

Большинство опций никак не проверяются в процессе работы потока, поэтому изменять значения свойств после создания инстанса потока не имеет смысла.

2 - Настройки потока

$multitask

Значение по умолчанию - true.

Флаг. Включает ожидание потоком следующих задач. Если отключено, то после выполнения одной задачи дочерний процесс умирает.

Потоки с предварительной инициализацией ($prefork = true) всегда многозадачны.

$listenMasterSignals

Значение по умолчанию - true.

Флаг. Включает в родительском процессе ожидание всех POSIX сигналов. SIGCHLD ожидается в любом случае - этот сигнал необходим для нормального функционирования.

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

$prefork

Значение по умолчанию - true.

Флаг. Включает предварительную инициализацию "потока". Дочерний процесс ответвляется сразу во время создания инстанса. Это позволяет проводить инициализацию более эффективно (особенно в пулах).

Потоки с предварительной инициализацией всегда многозадачны.

$preforkWait

Значение по умолчанию - false.

Флаг. Включает принудительной ожидание предварительной инициализации. Это позволяет не делать один вызов метода wait перед запуском задач, но при этом убирает весь выйгрыш эффективности от предварительной инициализации. Так что не рекоммендуется к использованию.

$argumentsMapping

Значение по умолчанию - false.

Флаг. Включает маппинг аргументов в метод process. Что позволяет получать аргументы не через getParam/getParams, а как в обычной функции:

class ExampleThread extends Thread
{
	protected $argumentsMapping = true;
	function process($arg1, $arg2)
	{
		echo $arg1; // 12
		echo $arg2; // 79
	}
}
$thread = new ExampleThread();
$thread->wait()->run(12, 79);

Это слегка замедляет работу и поэтому отключено по умолчанию.

$timeoutMasterInitWait

Значение по умолчанию - 3.

Таймаут. Устанавливает максимальное время ожидания инициализации дочернего процесса в секундах (может иметь дробное значение).

Установите в отрицательное значение (-1), чтобы отключить.

$timeoutMasterResultWait

Значение по умолчанию - 5.

Таймаут. Устанавливает максимальное время ожидания результата в родительском процессе в секундах (может иметь дробное значение).

Установите в отрицательное значение (-1), чтобы отключить.

$timeoutWorkerJobWait

Значение по умолчанию - 600.

Таймаут. Устанавливает максимальное время ожидания новой задачи в дочернем процессе в секундах (может иметь дробное значение). Если за это время новая задача не будет получена, то дочерний процесс умирает.

Установите в отрицательное значение (-1), чтобы отключить.

$intervalWorkerMasterChecks

Значение по умолчанию - 5.

Интервал. Устанавливает интервал в секундах (может иметь дробное значение), по истечении которого дочерний процесс проверяет, что родительский процесс жив. Если проверка неуспешна, то дочерний процесс умирает.

Не может быть отключен. При некорректном значении будет использоваться значение по умолчанию.

3 - Статические настройки

Thread::$ipcDataMode

Режим сериализации данных для передачи между процессами. По умолчанию используется стандартная сериализация php. Если доступно расширение igbinary, то автоматически используется оно. Не рекоммендуется менять значение вручную.

Thread::$useForks

Флаг доступности полноценного режима работы. Автоматически выставляется в true, если доступны все зависимости. Если выставлен в false, то "потоки" используют синхронный режим совместимости. Вы можете включить его специально, если необходимо тестирования функционала в упрощенном синхронном режиме без разветвления.