Jump to content

Xperience.cloud - Gearman: Difference between revisions

From Parasol
Created page with "The xperience.cloud runs a parallel worker execution service using http://gearman.org Enviroment Stage and Live-Servers are using separate Gearman instances. Stage The Stage..."
 
No edit summary
Tag: visualeditor
Line 1: Line 1:
The xperience.cloud runs a parallel worker execution service using http://gearman.org
The xperience.cloud runs a parallel worker execution service using http://gearman.org


Enviroment
===== Enviroment =====
Stage and Live-Servers are using separate Gearman instances.  
Stage and Live-Servers are using separate Gearman instances.
Stage
 
====== Stage ======
The Stage Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to
The Stage Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to
GEARMAN_SERVER = ip-172-31-34-64.eu-central-1.compute.internal
GEARMAN_SERVER = ip-172-31-34-64.eu-central-1.compute.internal
what is the private DNS for the Stage-Server himself.
what is the private DNS for the Stage-Server himself.
Prod
 
====== Prod ======
The Prod Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to
The Prod Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to
GEARMAN_SERVER = ip-172-31-27-199.eu-central-1.compute.internal
GEARMAN_SERVER = ip-172-31-27-199.eu-central-1.compute.internal
what is the service.xperience.cloud EC2 Instances private DNS.
what is the service.xperience.cloud EC2 Instances private DNS.
Worker
 
===== Worker =====
Gearman Jobs are called "Worker". The workers are located in "/gearman/jobs/" and will be initialised by "gearman/worker.php".  
Gearman Jobs are called "Worker". The workers are located in "/gearman/jobs/" and will be initialised by "gearman/worker.php".  
New Worker Code / Restarting the Workers
 
====== New Worker Code / Restarting the Workers ======
To use new code, you have to restart the workers. You can restart the workers by just killing them using
To use new code, you have to restart the workers. You can restart the workers by just killing them using
sudo pkill -f worker.php
sudo pkill -f worker.php
on the corresponding gearman machine.  
on the corresponding gearman machine.  
Logging
 
====== Logging ======
The Gearman Worker's php code should log into the syslog ("/var/log/syslog"). The Gearman Job Server itself is logging into his own log at "/var/log/gearman-job-server/gearmand.log". To watch your Gearman Jobs running or debug them, you can use
The Gearman Worker's php code should log into the syslog ("/var/log/syslog"). The Gearman Job Server itself is logging into his own log at "/var/log/gearman-job-server/gearmand.log". To watch your Gearman Jobs running or debug them, you can use
sudo tail -f /var/log/syslog /var/log/php7.3-fpm.log /var/log/gearman-job-server/gearmand.log
sudo tail -f /var/log/syslog /var/log/php7.3-fpm.log /var/log/gearman-job-server/gearmand.log
Using
 
You can use the Gearman worker in your code by adding a new Client
====== Using ======
You can use the Gearman worker in your code by adding a new Client<syntaxhighlight lang="php5" line="1">
$client = new GearmanClient();
$client = new GearmanClient();
$client->addServer(getenv('GEARMAN_SERVER'));
$client->addServer(getenv('GEARMAN_SERVER'));
and sending your payload to it
</syntaxhighlight>and sending your payload to it<syntaxhighlight lang="php5" line="1">
$result = $client->doBackground('send_twilio_sms_or_voice', json_encode(array(
$result = $client->doBackground('send_twilio_sms_or_voice', json_encode(array(
    "meta" => array(
"meta" => array( 'twilio_number_voice' => $phone_from_voice ), "data" => array( 'phone_to' => $telephone, 'phone_type' => 'voice', 'phone_body' => $phone_body )
        'twilio_number_voice' => $phone_from_voice
    ),
    "data" => array(
        'phone_to' => $telephone,
        'phone_type' => 'voice',
        'phone_body' => $phone_body
    )
)));
)));
Please mind, that Gearman workers do not give an execution result.  
</syntaxhighlight><!-- Please mind, that Gearman workers do not give an execution result. -->


Current Workers
Current Workers
There are two workers for
There are two workers for
Sending (RAW) Emails via Amazon AWS / SES (gearman/jobs/send_aws_ses.php)
Sending (RAW) Emails via Amazon AWS / SES (gearman/jobs/send_aws_ses.php)
Sending SMS and doing Voicecalls via Twilio (gearman/jobs/send_twilio_sms_or_voice.php)
Sending SMS and doing Voicecalls via Twilio (gearman/jobs/send_twilio_sms_or_voice.php)

Revision as of 10:37, 8 February 2021

The xperience.cloud runs a parallel worker execution service using http://gearman.org

Enviroment

Stage and Live-Servers are using separate Gearman instances.

Stage

The Stage Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to

GEARMAN_SERVER = ip-172-31-34-64.eu-central-1.compute.internal

what is the private DNS for the Stage-Server himself.

Prod

The Prod Servers Gearman is configured as "GEARMAN_SERVER" in the .env file and is pointing to

GEARMAN_SERVER = ip-172-31-27-199.eu-central-1.compute.internal

what is the service.xperience.cloud EC2 Instances private DNS.

Worker

Gearman Jobs are called "Worker". The workers are located in "/gearman/jobs/" and will be initialised by "gearman/worker.php".

New Worker Code / Restarting the Workers

To use new code, you have to restart the workers. You can restart the workers by just killing them using

sudo pkill -f worker.php

on the corresponding gearman machine.

Logging

The Gearman Worker's php code should log into the syslog ("/var/log/syslog"). The Gearman Job Server itself is logging into his own log at "/var/log/gearman-job-server/gearmand.log". To watch your Gearman Jobs running or debug them, you can use

sudo tail -f /var/log/syslog /var/log/php7.3-fpm.log /var/log/gearman-job-server/gearmand.log
Using

You can use the Gearman worker in your code by adding a new Client<syntaxhighlight lang="php5" line="1"> $client = new GearmanClient(); $client->addServer(getenv('GEARMAN_SERVER')); </syntaxhighlight>and sending your payload to it<syntaxhighlight lang="php5" line="1"> $result = $client->doBackground('send_twilio_sms_or_voice', json_encode(array( "meta" => array( 'twilio_number_voice' => $phone_from_voice ), "data" => array( 'phone_to' => $telephone, 'phone_type' => 'voice', 'phone_body' => $phone_body ) ))); </syntaxhighlight>

Current Workers

There are two workers for

Sending (RAW) Emails via Amazon AWS / SES (gearman/jobs/send_aws_ses.php)

Sending SMS and doing Voicecalls via Twilio (gearman/jobs/send_twilio_sms_or_voice.php)