summaryrefslogtreecommitdiff
path: root/src/classes
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-04-13 02:17:19 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-04-13 02:17:19 +0300
commit7330a35806ffc1c91f0765d1fe19df2c459d5579 (patch)
tree489bad797be3bfadcb966bbfb290dd5044f74189 /src/classes
parent544f2444211aa1ad9e3611818fb87e8a8882ff55 (diff)
add signals example
Diffstat (limited to 'src/classes')
-rw-r--r--src/classes/Job.php9
-rw-r--r--src/classes/jobs.php21
2 files changed, 27 insertions, 3 deletions
diff --git a/src/classes/Job.php b/src/classes/Job.php
index 4ecbf6c..56052cb 100644
--- a/src/classes/Job.php
+++ b/src/classes/Job.php
@@ -48,4 +48,13 @@ abstract class Job extends model {
abstract public function run();
+ public function __construct(array $raw) {
+ parent::__construct($raw);
+
+ pcntl_async_signals(true);
+ pcntl_signal(SIGTERM, [$this, 'signalHandler']);
+ pcntl_signal(SIGINT, [$this, 'signalHandler']);
+ }
+
+ protected function signalHandler(int $signal) {}
} \ No newline at end of file
diff --git a/src/classes/jobs.php b/src/classes/jobs.php
index 9acbc50..5010775 100644
--- a/src/classes/jobs.php
+++ b/src/classes/jobs.php
@@ -82,6 +82,21 @@ class jobs
return self::add($target, $name, $data, Job::STATUS_MANUAL);
}
+ public static function sendSignal(int $job_id, int $signal, string $target)
+ {
+ $client = getJobdMaster();
+ $response = $client->sendSignal($job_id, $signal, $target);
+
+ // master request failed
+ if (($error = $response->getError()) !== null)
+ throw new Exception("jobd returned error: ".$error);
+
+ $data = $response->getData();
+ $client->close();
+
+ return $data[$job_id];
+ }
+
/**
* Run jobs with given ids and status=Job::STATUS_MANUAL and wait for results.
*
@@ -198,10 +213,11 @@ class jobs
/**
* @param string|string[] $targets
+ * @throws \jobd\exceptions\JobdException
+ * @return bool
*/
- public static function poke($targets)
+ public static function poke($targets): bool
{
-
$client = getJobdMaster();
if (!is_array($targets))
@@ -248,7 +264,6 @@ class jobs
class job_target
{
-
const any = "any";
public static function high(int $server): string