Note that GEARMAN_TIMEOUT is mostly triggered when you use a callback with the addTask() and addTaskBackground() methods. If the Gearman server is not able to answer under high volume of jobs about the status of the current job, the client will certainly throw a GEARMAN_TIMEOUT error.
The safest way to escape this error is using the doBackground() method especially when you are not interested to find the status of the job (failed or completed) and that should be a rule when you are sending high volume of jobs to the server.