The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Gearman::Server - function call "router" and load balancer


You run a Gearman server (or more likely, many of them for both high-availability and load balancing), then have workers (using Gearman::Worker from the Gearman module, or libraries for other languages) register their ability to do certain functions to all of them, and then clients (using Gearman::Client, Gearman::Client::Async, etc) request work to be done from one of the Gearman servers.

The servers connect them, routing function call requests to the appropriate workers, multiplexing responses to duplicate requests as requested, etc.

More than likely, you want to use the provided gearmand wrapper script, and not use Gearman::Server directly.



  $server_object = Gearman::Server->new( %options )

Creates and returns a new Gearman::Server object, which attaches itself to the Danga::Socket event loop. The server will begin operating when the Danga::Socket runloop is started. This means you need to start up the runloop before anything will happen.



Specify a port which you would like the Gearman::Server to listen on for TCP connections (not necessary, but useful)


  $server_object->create_listening_sock( $portnum )

Add a TCP port listener for incoming Gearman worker and client connections.


  $pid = $server_object->start_worker( $prog )

  ($pid, $client) = $server_object->start_worker( $prog )

Fork and start a worker process named by $prog and returns the pid (or pid and client object).