No real preamble to be made here. Gearman is a distributed job queuing system by the fine folks who brought us memcached. It is nicer than anything else I’ve looked at. I am attempting to switch one of my projects over to it (replacing a crufty curl + unix sockets + memcached monstrosity that attempted to do the same job).
The documentation is lacking, but if the discussion group is any indication, real docs are a high priority for the project team. Today, I visited the IRC channel to ask for a status update on docs for the PHP extension api (as opposed to the PEAR all-script api, whose auto-generated docs are broken). Turns out my suspicions were right. Documentation is a high priority and none currently exists for the api in question. However… I was informed that the classes support reflection… so
A quick grep of the source for the extension tells me that I am looking at four classes: GearmanClient, GearmanWorker, GearmanJob, and GearmanTask. A ridiculously short php script later…
<?
Reflection::export( new ReflectionClass('GearmanWorker') );
Reflection::export( new ReflectionClass('GearmanClient') );
Reflection::export( new ReflectionClass('GearmanJob') );
Reflection::export( new ReflectionClass('GearmanTask') );
?>
And I can at least try to make a human readable list of available methods.
GearmanWorker
- __construct()
- clone()
- error()
- returnCode()
- setOptions( $option, $data )
- addServer( $host, $port ) – both args optional, examples say defaults are localhost on port 4730.
- addFunction( $function_name, $function, $data, $timeout ) – data and timeout optional
- work()
GearmanClient
- __construct()
- clone()
- error()
- setOptions( $option, $data )
- addServer( $host, $port ) – reflection says REQUIRED, however the provided examples and personal experience says otherwise
- do( $function_name, $workload, $unique ) – unique is optional
- doHigh( $function_name, $workload, $unique ) – unique is optional
- doLow( $function_name, $workload, $unique ) – unique is optional
- doJobHandle()
- doStatus()
- doBackground( $function_name, $workload, $unique ) – unique is optional
- doHighBackground( $function_name, $workload, $unique ) – unique is optional
- doLowBackground( $function_name, $workload, $unique ) – unique is optional
- jobStatus( $job_handle )
- echo( $workload )
- addTask( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskHigh( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskLow( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskBackground( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskHighBackground( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskLowBackground( $function_name, $workload, $data, $unique ) – data and unique are optional
- addTaskStatus( $job_handle, $data ) – data is optional
- setWorkloadCallback( $callback )
- setCreatedCallback( $callback)
- setClientCallback( $callback)
- setWarningCallback( $callback)
- setStatusCallback( $callback)
- setCompleteCallback( $callback)
- setExceptionCallback( $callback)
- setFailCallback( $callback)
- clearCallbacks()
- data()
- setData( $data )
- runTasks()
GearmanJob
- __construct()
- returnCode()
- workload()
- workloadSize()
- warning( $warning )
- status( $numerator, $denominator )
- handle()
- unique()
- data( $data )
- complete( $result )
- exception( $exception )
- fail()
- functionName()
- setReturn( $gearman_return_t )
GearmanTask
- __construct()
- returnCode()
- create()
- free()
- function()
- uuid()
- jobHandle()
- isKnown()
- isRunning()
- taskNumerator()
- taskDenominator()
- data()
- dataSize()
- takeData( $task_object ) – optional
- sendData( $data )
- recvData( $data_len )
The extension also appears to expose all constants defined in the C api.
I have since added this to the official wiki – so there are at least SOME docs on the site now