Xperience.cloud - Gearman: Difference between revisions
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. | |||
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. | |||
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. | |||
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( 'twilio_number_voice' => $phone_from_voice ), "data" => array( 'phone_to' => $telephone, 'phone_type' => 'voice', 'phone_body' => $phone_body ) | |||
))); | ))); | ||
</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)