diff --git a/reference/gearman/gearmanclient.xml b/reference/gearman/gearmanclient.xml
new file mode 100644
index 000000000..427117832
--- /dev/null
+++ b/reference/gearman/gearmanclient.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ Класс GearmanClient
+ GearmanClient
+
+
+
+
+
+ &reftitle.intro;
+
+ Представляет собой класс для подключения к серверу задач Gearman и выполнения
+ некоторых функций над указанными данными. Выполняемая функция должна быть
+ зарегистрирована процессом Gearman worker и передаваемые данные являются
+ непрозрачными для сервера задач.
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+ GearmanClient
+
+
+
+
+ GearmanClient
+
+
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+ &reference.gearman.entities.gearmanclient;
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addoptions.xml b/reference/gearman/gearmanclient/addoptions.xml
new file mode 100644
index 000000000..2499b6db2
--- /dev/null
+++ b/reference/gearman/gearmanclient/addoptions.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+ GearmanClient::addOptions
+ Добавить клиентские опции
+
+
+
+ &reftitle.description;
+
+ public boolGearmanClient::addOptions
+ intoptions
+
+
+ Добавляет одну или несколько опций к уже установленным.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ options
+
+
+ Опции для добавления
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Всегда возвращает &true;.
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addserver.xml b/reference/gearman/gearmanclient/addserver.xml
new file mode 100644
index 000000000..6f4558060
--- /dev/null
+++ b/reference/gearman/gearmanclient/addserver.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+ GearmanClient::addServer
+ Добавить сервер задач для клиента
+
+
+
+ &reftitle.description;
+
+ public boolGearmanClient::addServer
+ stringhost127.0.0.1
+ intport4730
+
+
+ Добавляет сервер задач к списку серверов, которые могут использоваться для выполнения задачи.
+ Никаких операций ввода-вывода c сокетом здесь не происходит. Сервер просто добавляется к списку.
+
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ host
+
+
+ &gearman.parameter.host;
+
+
+
+
+ port
+
+
+ &gearman.parameter.port;
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.success;
+
+
+
+
+ &reftitle.examples;
+
+
+ Добавление двух серверов задач
+
+addServer("10.0.0.1");
+$gmclient->addServer("10.0.0.2", 7003);
+
+?>
+]]>
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addServers
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addservers.xml b/reference/gearman/gearmanclient/addservers.xml
new file mode 100644
index 000000000..fc3285692
--- /dev/null
+++ b/reference/gearman/gearmanclient/addservers.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ GearmanClient::addServers
+ Добавить список серверов задач для клиента
+
+
+
+ &reftitle.description;
+
+ public boolGearmanClient::addServers
+ stringservers127.0.0.1:4730
+
+
+ Добавляет список серверов задач, которые могут использоваться для выполнения задачи.
+ Никаких операций ввода-вывода c сокетом здесь не происходит. Сервера просто добавляются к полному списку серверов.
+
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ servers
+
+
+ Список серверов, разделенных запятыми. Каждый сервер указан в формате 'host:port'.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.success;
+
+
+
+
+ &reftitle.examples;
+
+
+ Добавление двух серверов задач
+
+addServers("10.0.0.1,10.0.0.2:7003");
+
+?>
+]]>
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addServer
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addtask.xml b/reference/gearman/gearmanclient/addtask.xml
new file mode 100644
index 000000000..28478ab63
--- /dev/null
+++ b/reference/gearman/gearmanclient/addtask.xml
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+ GearmanClient::addTask
+ Добавить задачу, которая будет выполнена в параллельном режиме
+
+
+
+ &reftitle.description;
+
+ public GearmanTaskGearmanClient::addTask
+ stringfunction_name
+ stringworkload
+ mixedcontext
+ stringunique
+
+
+ Добавляет задачу для параллельной работы с другими задачами. Вызовите этот метод для всех задач,
+ которые будут работать параллельно, а затем вызовите GearmanClient::runTasks
+ для выполнения работ. Обратите внимание, что должно быть достаточное количество работников
+ для одновременного выполнения всех задач.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ function_name
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ context
+
+
+ &gearman.parameter.context;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Объект GearmanTask или &false;, если задача не может быть добавлена.
+
+
+
+
+ &reftitle.examples;
+
+
+ Основное представление двух задач
+
+addServer();
+
+# Добавляем задачу для выполнения функции reverse, переворачивающей строку "Hello World!"
+$gmclient->addTask("reverse", "Hello World!", null, "1");
+
+# Добавляем другую задачу, для выполнения функции reverse, переворачивающей строку "!dlroW olleH"
+$gmclient->addTask("reverse", "!dlroW olleH", null, "2");
+
+# Устанавливаем функцию, которая будет вызвана по завершению работы
+$gmclient->setCompleteCallback("complete");
+
+# Выполняем задачи
+$gmclient->runTasks();
+
+function complete($task)
+{
+ print "Выполнено: " . $task->unique() . ", " . $task->data() . "\n";
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+
+
+
+ Основное представление двух задач с передачей контекста приложения
+
+addServer();
+
+# Добавим несколько задач и местоположение результатов
+$results = array();
+$client->addTask("reverse", "Hello World!", &$results, "t1");
+$client->addTask("reverse", "!dlroW olleH", &$results, "t2");
+
+$client->setCompleteCallback("reverse_complete");
+$client->runTasks();
+
+# Результаты должны быть заполнены из обратного вызова
+foreach ($results as $id => $result)
+ echo $id . ": " . $result['handle'] . ", " . $result['data'] . "\n";
+
+
+function reverse_complete($task, $results)
+{
+ $results[$task->unique()] = array("handle"=>$task->jobHandle(), "data"=>$task->data());
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addTaskHigh
+ GearmanClient::addTaskLow
+ GearmanClient::addTaskBackground
+ GearmanClient::addTaskHighBackground
+ GearmanClient::addTaskLowBackground
+ GearmanClient::runTasks
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addtaskbackground.xml b/reference/gearman/gearmanclient/addtaskbackground.xml
new file mode 100644
index 000000000..654ab2c66
--- /dev/null
+++ b/reference/gearman/gearmanclient/addtaskbackground.xml
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+ GearmanClient::addTaskBackground
+ Добавить фоновую задачу для работы в параллельном режиме
+
+
+
+ &reftitle.description;
+
+ public GearmanTaskGearmanClient::addTaskBackground
+ stringfunction_name
+ stringworkload
+ mixedcontext
+ stringunique
+
+
+ Добавляет фоновую задачу для параллельной работы с другими задачами. Вызовите этот метод для всех задач,
+ которые будут работать параллельно, а затем вызовите GearmanClient::runTasks для
+ выполнения работ.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ function_name
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ context
+
+
+ &gearman.parameter.context;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Объект GearmanTask или &false;, если задача не может быть добавлена.
+
+
+
+
+ &reftitle.examples;
+
+
+ Две задачи, одна в фоновом режиме другая нет
+
+ Этот пример иллюстрирует различие между выполнением фоновой задачи и
+ нормальной задачей. Клиент добавляет две задачи для выполнения одних и тех же функций,
+ но одна добавлена с помощью addTaskBackground. Обратный вызов
+ установлен так, чтобы выполнение задания можно было проследить. Простой рабочий с
+ искусственной задержкой сообщает статус выполнения задания, и клиент понимает это
+ посредством обратного вызова. Два рабочих запущены для этого примера. Обратите внимание,
+ что фоновая задача не показывается в клиентском выводе.
+
+
+addServer();
+
+# Установка нескольких обратных вызовов. Таким образом, мы сможем отслеживать выполнение
+$gmc->setCompleteCallback("reverse_complete");
+$gmc->setStatusCallback("reverse_status");
+
+# Добавление задачи для функции reverse
+$task= $gmc->addTask("reverse", "Hello World!", null, "1");
+
+# Добавление другой задачи, но она предназначена для запуска в фоне
+$task= $gmc->addTaskBackground("reverse", "!dlroW olleH", null, "2");
+
+if (! $gmc->runTasks())
+{
+ echo "Ошибка " . $gmc->error() . "\n";
+ exit;
+}
+
+echo "Выполнено\n";
+
+function reverse_status($task)
+{
+ echo "Статус: " . $task->unique() . ", " . $task->jobHandle() . " - " . $task->taskNumerator() .
+ "/" . $task->taskDenominator() . "\n";
+}
+
+function reverse_complete($task)
+{
+ echo "Завершено: " . $task->unique() . ", " . $task->data() . "\n";
+}
+
+?>
+]]>
+
+
+addServer();
+
+# Регистрируем функцию reverse на сервере
+$gmworker->addFunction("reverse", "reverse_fn");
+
+print "Ожидание задачи...\n";
+while($gmworker->work())
+{
+ if ($gmworker->returnCode() != GEARMAN_SUCCESS)
+ {
+ echo "возвратный код: " . $gmworker->returnCode() . "\n";
+ break;
+ }
+}
+
+function reverse_fn($job)
+{
+ echo "Получена задача: " . $job->handle() . "\n";
+
+ $workload = $job->workload();
+ $workload_size = $job->workloadSize();
+
+ echo "Рабочая нагрузка: $workload ($workload_size)\n";
+
+ # В этом цикле отображения статуса нет необходимости. Просто для демонстрации как это работает
+ for ($x= 0; $x < $workload_size; $x++)
+ {
+ echo "Отправка статуса: " . ($x + 1) . "/$workload_size выполнено\n";
+ $job->sendStatus($x+1, $workload_size);
+ $job->sendData(substr($workload, $x, 1));
+ sleep(1);
+ }
+
+ $result= strrev($workload);
+ echo "Результат: $result\n";
+
+ # Возвращаем то, что мы хотим вернуть клиенту
+ return $result;
+}
+
+?>
+]]>
+
+
+ Вывод рабочего для двух запущенных работников:
+
+
+
+
+
+ Клиент выводит:
+
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addTask
+ GearmanClient::addTaskHigh
+ GearmanClient::addTaskLow
+ GearmanClient::addTaskHighBackground
+ GearmanClient::addTaskLowBackground
+ GearmanClient::runTasks
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addtaskhigh.xml b/reference/gearman/gearmanclient/addtaskhigh.xml
new file mode 100644
index 000000000..ffcf9de56
--- /dev/null
+++ b/reference/gearman/gearmanclient/addtaskhigh.xml
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+ GearmanClient::addTaskHigh
+ Добавить высокоприоритетную задачу для работы в параллельном режиме
+
+
+
+ &reftitle.description;
+
+ public GearmanTaskGearmanClient::addTaskHigh
+ stringfunction_name
+ stringworkload
+ mixedcontext
+ stringunique
+
+
+ Добавляет высокоприоритетную задачу для параллельной работы с другими задачами. Вызовите этот метод
+ для всех высокоприоритетных задач, которые будут работать параллельно, а затем вызовите
+ GearmanClient::runTasks для выполнения работ. Задачи с высоким приоритетом
+ будут выбраны из очереди раньше задач с нормальным или низким приоритетом.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ function_name
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ context
+
+
+ &gearman.parameter.context;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Объект GearmanTask или &false;, если задача не может быть добавлена.
+
+
+
+
+ &reftitle.examples;
+
+
+ Высокоприоритетная задача вместе с двумя нормальными задачами
+
+ Высокоприоритетная задача включена среди двух других задач. Доступен единственный рабочий,
+ так что задачи запускаются одна за другой, высокоприоритетные задачи
+ выполняются в первую очередь.
+
+
+addServer();
+
+# установка обратной функции для сигнализации о завершении задачи
+$gmc->setCompleteCallback("reverse_complete");
+
+# добавление задач, одна из которых высокоприоритетная
+$task= $gmc->addTask("reverse", "Hello World!", null, "1");
+$task= $gmc->addTaskHigh("reverse", "!dlroW olleH", null, "2");
+$task= $gmc->addTask("reverse", "Hello World!", null, "3");
+
+if (! $gmc->runTasks())
+{
+ echo "Ошибка " . $gmc->error() . "\n";
+ exit;
+}
+echo "Выполнено\n";
+
+function reverse_complete($task)
+{
+ echo "Завершено: " . $task->unique() . ", " . $task->data() . "\n";
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addTask
+ GearmanClient::addTaskLow
+ GearmanClient::addTaskBackground
+ GearmanClient::addTaskHighBackground
+ GearmanClient::addTaskLowBackground
+ GearmanClient::runTasks
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanclient/addtaskhighbackground.xml b/reference/gearman/gearmanclient/addtaskhighbackground.xml
new file mode 100644
index 000000000..b174a05c8
--- /dev/null
+++ b/reference/gearman/gearmanclient/addtaskhighbackground.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+ GearmanClient::addTaskHighBackground
+ Добавить высокоприоритетную фоновую задачу для работы в параллельном режиме
+
+
+
+ &reftitle.description;
+
+ public GearmanTaskGearmanClient::addTaskHighBackground
+ stringfunction_name
+ stringworkload
+ mixedcontext
+ stringunique
+
+
+ Добавляет высокоприоритетную фоновую задачу для параллельной работы с другими задачами.
+ Вызовите этот метод для всех задач, которые будут работать параллельно, а затем вызовите
+ GearmanClient::runTasks для выполнения работ.
+ Задачи с высоким приоритетом будут выбраны из очереди раньше задач с нормальным или низким приоритетом.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ function_name
+
+
+ &gearman.parameter.functionname;
+
+
+
+
+ workload
+
+
+ &gearman.parameter.workload;
+
+
+
+
+ context
+
+
+ &gearman.parameter.context;
+
+
+
+
+ unique
+
+
+ &gearman.parameter.unique;
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Объект GearmanTask или &false;, если задача не может быть добавлена.
+
+
+
+
+ &reftitle.seealso;
+
+
+ GearmanClient::addTask
+ GearmanClient::addTaskHigh
+ GearmanClient::addTaskLow
+ GearmanClient::addTaskBackground
+ GearmanClient::addTaskLowBackground
+ GearmanClient::runTasks
+
+
+
+
+
+
+
diff --git a/reference/gearman/gearmanworker.xml b/reference/gearman/gearmanworker.xml
new file mode 100644
index 000000000..ba4b45cd4
--- /dev/null
+++ b/reference/gearman/gearmanworker.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+ Класс GearmanWorker
+ GearmanWorker
+
+
+
+
+
+ &reftitle.intro;
+
+ Описание класса.
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+ GearmanWorker
+
+
+
+
+ GearmanWorker
+
+
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+ &reference.gearman.entities.gearmanworker;
+
+
+
+