mirror of
https://github.com/php/pecl-networking-gearman.git
synced 2026-03-23 23:22:22 +01:00
644 lines
22 KiB
C
644 lines
22 KiB
C
/*
|
|
* Gearman PHP Extension
|
|
*
|
|
* Copyright (C) 2008 James M. Luedke <contact@jamesluedke.com>,
|
|
* Eric Day <eday@oddments.org>
|
|
* All rights reserved.
|
|
*
|
|
* Use and distribution licensed under the PHP license. See
|
|
* the LICENSE file in this directory for full text.
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include "php.h"
|
|
#include "php_ini.h"
|
|
#include "ext/standard/info.h"
|
|
#include "php_gearman.h"
|
|
#include "php_gearman_client.h"
|
|
#include "php_gearman_task.h"
|
|
#include "php_gearman_worker.h"
|
|
|
|
#include "zend_exceptions.h"
|
|
#include "zend_interfaces.h"
|
|
|
|
#include "gearman_arginfo.h"
|
|
|
|
#include <libgearman-1.0/gearman.h>
|
|
#include <libgearman-1.0/interface/status.h>
|
|
#include <libgearman-1.0/status.h>
|
|
|
|
zend_class_entry *gearman_exception_ce;
|
|
zend_class_entry *gearman_client_ce;
|
|
zend_object_handlers gearman_client_obj_handlers;
|
|
zend_class_entry *gearman_task_ce;
|
|
zend_object_handlers gearman_task_obj_handlers;
|
|
zend_class_entry *gearman_job_ce;
|
|
zend_object_handlers gearman_job_obj_handlers;
|
|
zend_class_entry *gearman_worker_ce;
|
|
zend_object_handlers gearman_worker_obj_handlers;
|
|
|
|
/* Custom malloc and free calls to avoid excessive buffer copies. */
|
|
void *_php_malloc(size_t size, void *arg) {
|
|
uint8_t *ret;
|
|
ret = emalloc(size+1);
|
|
ret[size]= 0;
|
|
return ret;
|
|
}
|
|
|
|
void _php_free(void *ptr, void *arg) {
|
|
efree(ptr);
|
|
}
|
|
|
|
/*
|
|
* Functions from gearman.h
|
|
*/
|
|
|
|
/* {{{ proto string gearman_version()
|
|
Returns libgearman version */
|
|
PHP_FUNCTION(gearman_version) {
|
|
RETURN_STRING((char *)gearman_version());
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ proto string gearman_bugreport()
|
|
Returns bug report URL string */
|
|
PHP_FUNCTION(gearman_bugreport) {
|
|
RETURN_STRING((char *)gearman_bugreport());
|
|
}
|
|
/* }}} */
|
|
|
|
/* {{{ proto ?string gearman_verbose_name(constant verbose)
|
|
Returns string with the name of the given verbose level */
|
|
PHP_FUNCTION(gearman_verbose_name) {
|
|
zend_long verbose;
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l",
|
|
&verbose) == FAILURE) {
|
|
php_error_docref(NULL, E_WARNING, "Unable to parse parameters.");
|
|
RETURN_NULL();
|
|
}
|
|
|
|
if (verbose < 0) {
|
|
php_error_docref(NULL, E_WARNING, "Input must be an integer greater than 0.");
|
|
RETURN_NULL();
|
|
}
|
|
|
|
RETURN_STRING((char *)gearman_verbose_name(verbose));
|
|
}
|
|
/* }}} */
|
|
|
|
PHP_MINIT_FUNCTION(gearman) {
|
|
zend_class_entry ce;
|
|
|
|
INIT_CLASS_ENTRY(ce, "GearmanClient", class_GearmanClient_methods);
|
|
gearman_client_ce = zend_register_internal_class(&ce);
|
|
gearman_client_ce->create_object = gearman_client_obj_new;
|
|
memcpy(&gearman_client_obj_handlers, zend_get_std_object_handlers(), sizeof(gearman_client_obj_handlers));
|
|
gearman_client_obj_handlers.offset = XtOffsetOf(gearman_client_obj, std);
|
|
gearman_client_obj_handlers.free_obj = gearman_client_free_obj;
|
|
|
|
INIT_CLASS_ENTRY(ce, "GearmanTask", class_GearmanTask_methods);
|
|
gearman_task_ce = zend_register_internal_class(&ce);
|
|
gearman_task_ce->create_object = gearman_task_obj_new;
|
|
memcpy(&gearman_task_obj_handlers, zend_get_std_object_handlers(), sizeof(gearman_task_obj_handlers));
|
|
gearman_task_obj_handlers.offset = XtOffsetOf(gearman_task_obj, std);
|
|
gearman_task_obj_handlers.free_obj = gearman_task_free_obj;
|
|
|
|
INIT_CLASS_ENTRY(ce, "GearmanWorker", class_GearmanWorker_methods);
|
|
gearman_worker_ce = zend_register_internal_class(&ce);
|
|
gearman_worker_ce->create_object = gearman_worker_obj_new;
|
|
memcpy(&gearman_worker_obj_handlers, zend_get_std_object_handlers(), sizeof(gearman_worker_obj_handlers));
|
|
gearman_worker_obj_handlers.offset = XtOffsetOf(gearman_worker_obj, std);
|
|
gearman_worker_obj_handlers.free_obj = gearman_worker_free_obj;
|
|
|
|
INIT_CLASS_ENTRY(ce, "GearmanJob", class_GearmanJob_methods);
|
|
gearman_job_ce = zend_register_internal_class(&ce);
|
|
gearman_job_ce->create_object = gearman_job_obj_new;
|
|
memcpy(&gearman_job_obj_handlers, zend_get_std_object_handlers(), sizeof(gearman_job_obj_handlers));
|
|
gearman_job_obj_handlers.offset = XtOffsetOf(gearman_job_obj, std);
|
|
|
|
/* XXX exception class */
|
|
INIT_CLASS_ENTRY(ce, "GearmanException", NULL)
|
|
gearman_exception_ce = zend_register_internal_class_ex(&ce, zend_ce_exception);
|
|
gearman_exception_ce->ce_flags |= ZEND_ACC_FINAL;
|
|
zend_declare_property_long(gearman_exception_ce, "code", sizeof("code")-1, 0, ZEND_ACC_PUBLIC);
|
|
|
|
/* These are automatically generated from gearman_constants.h using
|
|
const_gen.sh. Do not remove the CONST_GEN_* comments, this is how the
|
|
script locates the correct location to replace. */
|
|
|
|
/* CONST_GEN_START */
|
|
REGISTER_STRING_CONSTANT("GEARMAN_DEFAULT_TCP_HOST",
|
|
GEARMAN_DEFAULT_TCP_HOST,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DEFAULT_TCP_PORT",
|
|
GEARMAN_DEFAULT_TCP_PORT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DEFAULT_SOCKET_TIMEOUT",
|
|
GEARMAN_DEFAULT_SOCKET_TIMEOUT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DEFAULT_SOCKET_SEND_SIZE",
|
|
GEARMAN_DEFAULT_SOCKET_SEND_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DEFAULT_SOCKET_RECV_SIZE",
|
|
GEARMAN_DEFAULT_SOCKET_RECV_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_MAX_ERROR_SIZE",
|
|
GEARMAN_MAX_ERROR_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_PACKET_HEADER_SIZE",
|
|
GEARMAN_PACKET_HEADER_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_HANDLE_SIZE",
|
|
GEARMAN_JOB_HANDLE_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_OPTION_SIZE",
|
|
GEARMAN_OPTION_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_UNIQUE_SIZE",
|
|
GEARMAN_UNIQUE_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_MAX_COMMAND_ARGS",
|
|
GEARMAN_MAX_COMMAND_ARGS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_ARGS_BUFFER_SIZE",
|
|
GEARMAN_ARGS_BUFFER_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SEND_BUFFER_SIZE",
|
|
GEARMAN_SEND_BUFFER_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_RECV_BUFFER_SIZE",
|
|
GEARMAN_RECV_BUFFER_SIZE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_WAIT_TIMEOUT",
|
|
GEARMAN_WORKER_WAIT_TIMEOUT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SUCCESS",
|
|
GEARMAN_SUCCESS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_IO_WAIT",
|
|
GEARMAN_IO_WAIT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SHUTDOWN",
|
|
GEARMAN_SHUTDOWN,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SHUTDOWN_GRACEFUL",
|
|
GEARMAN_SHUTDOWN_GRACEFUL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_ERRNO",
|
|
GEARMAN_ERRNO,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_EVENT",
|
|
GEARMAN_EVENT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TOO_MANY_ARGS",
|
|
GEARMAN_TOO_MANY_ARGS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NO_ACTIVE_FDS",
|
|
GEARMAN_NO_ACTIVE_FDS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_INVALID_MAGIC",
|
|
GEARMAN_INVALID_MAGIC,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_INVALID_COMMAND",
|
|
GEARMAN_INVALID_COMMAND,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_INVALID_PACKET",
|
|
GEARMAN_INVALID_PACKET,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_UNEXPECTED_PACKET",
|
|
GEARMAN_UNEXPECTED_PACKET,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_GETADDRINFO",
|
|
GEARMAN_GETADDRINFO,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NO_SERVERS",
|
|
GEARMAN_NO_SERVERS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_LOST_CONNECTION",
|
|
GEARMAN_LOST_CONNECTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_MEMORY_ALLOCATION_FAILURE",
|
|
GEARMAN_MEMORY_ALLOCATION_FAILURE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_EXISTS",
|
|
GEARMAN_JOB_EXISTS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_QUEUE_FULL",
|
|
GEARMAN_JOB_QUEUE_FULL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SERVER_ERROR",
|
|
GEARMAN_SERVER_ERROR,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_ERROR",
|
|
GEARMAN_WORK_ERROR,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_DATA",
|
|
GEARMAN_WORK_DATA,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_WARNING",
|
|
GEARMAN_WORK_WARNING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_STATUS",
|
|
GEARMAN_WORK_STATUS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_EXCEPTION",
|
|
GEARMAN_WORK_EXCEPTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORK_FAIL",
|
|
GEARMAN_WORK_FAIL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NOT_CONNECTED",
|
|
GEARMAN_NOT_CONNECTED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COULD_NOT_CONNECT",
|
|
GEARMAN_COULD_NOT_CONNECT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SEND_IN_PROGRESS",
|
|
GEARMAN_SEND_IN_PROGRESS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_RECV_IN_PROGRESS",
|
|
GEARMAN_RECV_IN_PROGRESS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NOT_FLUSHING",
|
|
GEARMAN_NOT_FLUSHING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DATA_TOO_LARGE",
|
|
GEARMAN_DATA_TOO_LARGE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_INVALID_FUNCTION_NAME",
|
|
GEARMAN_INVALID_FUNCTION_NAME,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_INVALID_WORKER_FUNCTION",
|
|
GEARMAN_INVALID_WORKER_FUNCTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NO_REGISTERED_FUNCTIONS",
|
|
GEARMAN_NO_REGISTERED_FUNCTIONS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NO_JOBS",
|
|
GEARMAN_NO_JOBS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_ECHO_DATA_CORRUPTION",
|
|
GEARMAN_ECHO_DATA_CORRUPTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NEED_WORKLOAD_FN",
|
|
GEARMAN_NEED_WORKLOAD_FN,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_PAUSE",
|
|
GEARMAN_PAUSE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_UNKNOWN_STATE",
|
|
GEARMAN_UNKNOWN_STATE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_PTHREAD",
|
|
GEARMAN_PTHREAD,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_PIPE_EOF",
|
|
GEARMAN_PIPE_EOF,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_QUEUE_ERROR",
|
|
GEARMAN_QUEUE_ERROR,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_FLUSH_DATA",
|
|
GEARMAN_FLUSH_DATA,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_SEND_BUFFER_TOO_SMALL",
|
|
GEARMAN_SEND_BUFFER_TOO_SMALL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_IGNORE_PACKET",
|
|
GEARMAN_IGNORE_PACKET,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_UNKNOWN_OPTION",
|
|
GEARMAN_UNKNOWN_OPTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TIMEOUT",
|
|
GEARMAN_TIMEOUT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_MAX_RETURN",
|
|
GEARMAN_MAX_RETURN,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_FATAL",
|
|
GEARMAN_VERBOSE_FATAL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_ERROR",
|
|
GEARMAN_VERBOSE_ERROR,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_INFO",
|
|
GEARMAN_VERBOSE_INFO,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_DEBUG",
|
|
GEARMAN_VERBOSE_DEBUG,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_CRAZY",
|
|
GEARMAN_VERBOSE_CRAZY,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_VERBOSE_MAX",
|
|
GEARMAN_VERBOSE_MAX,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_NON_BLOCKING",
|
|
GEARMAN_NON_BLOCKING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_DONT_TRACK_PACKETS",
|
|
GEARMAN_DONT_TRACK_PACKETS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_READY",
|
|
GEARMAN_CON_READY,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_PACKET_IN_USE",
|
|
GEARMAN_CON_PACKET_IN_USE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_EXTERNAL_FD",
|
|
GEARMAN_CON_EXTERNAL_FD,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_IGNORE_LOST_CONNECTION",
|
|
GEARMAN_CON_IGNORE_LOST_CONNECTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_CLOSE_AFTER_FLUSH",
|
|
GEARMAN_CON_CLOSE_AFTER_FLUSH,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_SEND_STATE_NONE",
|
|
GEARMAN_CON_SEND_STATE_NONE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CON_RECV_STATE_READ_DATA",
|
|
GEARMAN_CON_RECV_STATE_READ_DATA,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_TEXT",
|
|
GEARMAN_COMMAND_TEXT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_CAN_DO",
|
|
GEARMAN_COMMAND_CAN_DO,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_CANT_DO",
|
|
GEARMAN_COMMAND_CANT_DO,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_RESET_ABILITIES",
|
|
GEARMAN_COMMAND_RESET_ABILITIES,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_PRE_SLEEP",
|
|
GEARMAN_COMMAND_PRE_SLEEP,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_UNUSED",
|
|
GEARMAN_COMMAND_UNUSED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_NOOP",
|
|
GEARMAN_COMMAND_NOOP,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB",
|
|
GEARMAN_COMMAND_SUBMIT_JOB,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_JOB_CREATED",
|
|
GEARMAN_COMMAND_JOB_CREATED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_GRAB_JOB",
|
|
GEARMAN_COMMAND_GRAB_JOB,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_NO_JOB",
|
|
GEARMAN_COMMAND_NO_JOB,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_JOB_ASSIGN",
|
|
GEARMAN_COMMAND_JOB_ASSIGN,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_STATUS",
|
|
GEARMAN_COMMAND_WORK_STATUS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_COMPLETE",
|
|
GEARMAN_COMMAND_WORK_COMPLETE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_FAIL",
|
|
GEARMAN_COMMAND_WORK_FAIL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_GET_STATUS",
|
|
GEARMAN_COMMAND_GET_STATUS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_ECHO_REQ",
|
|
GEARMAN_COMMAND_ECHO_REQ,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_ECHO_RES",
|
|
GEARMAN_COMMAND_ECHO_RES,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_BG",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_BG,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_ERROR",
|
|
GEARMAN_COMMAND_ERROR,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_STATUS_RES",
|
|
GEARMAN_COMMAND_STATUS_RES,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_HIGH",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_HIGH,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SET_CLIENT_ID",
|
|
GEARMAN_COMMAND_SET_CLIENT_ID,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_CAN_DO_TIMEOUT",
|
|
GEARMAN_COMMAND_CAN_DO_TIMEOUT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_ALL_YOURS",
|
|
GEARMAN_COMMAND_ALL_YOURS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_EXCEPTION",
|
|
GEARMAN_COMMAND_WORK_EXCEPTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_OPTION_REQ",
|
|
GEARMAN_COMMAND_OPTION_REQ,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_OPTION_RES",
|
|
GEARMAN_COMMAND_OPTION_RES,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_DATA",
|
|
GEARMAN_COMMAND_WORK_DATA,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_WORK_WARNING",
|
|
GEARMAN_COMMAND_WORK_WARNING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_GRAB_JOB_UNIQ",
|
|
GEARMAN_COMMAND_GRAB_JOB_UNIQ,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_JOB_ASSIGN_UNIQ",
|
|
GEARMAN_COMMAND_JOB_ASSIGN_UNIQ,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_HIGH_BG",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_HIGH_BG,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_LOW",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_LOW,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_LOW_BG",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_LOW_BG,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_SCHED",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_SCHED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_SUBMIT_JOB_EPOCH",
|
|
GEARMAN_COMMAND_SUBMIT_JOB_EPOCH,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_COMMAND_MAX",
|
|
GEARMAN_COMMAND_MAX,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_NEW",
|
|
GEARMAN_TASK_STATE_NEW,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_SUBMIT",
|
|
GEARMAN_TASK_STATE_SUBMIT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_WORKLOAD",
|
|
GEARMAN_TASK_STATE_WORKLOAD,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_WORK",
|
|
GEARMAN_TASK_STATE_WORK,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_CREATED",
|
|
GEARMAN_TASK_STATE_CREATED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_DATA",
|
|
GEARMAN_TASK_STATE_DATA,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_WARNING",
|
|
GEARMAN_TASK_STATE_WARNING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_STATUS",
|
|
GEARMAN_TASK_STATE_STATUS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_COMPLETE",
|
|
GEARMAN_TASK_STATE_COMPLETE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_EXCEPTION",
|
|
GEARMAN_TASK_STATE_EXCEPTION,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_FAIL",
|
|
GEARMAN_TASK_STATE_FAIL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_TASK_STATE_FINISHED",
|
|
GEARMAN_TASK_STATE_FINISHED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_PRIORITY_HIGH",
|
|
GEARMAN_JOB_PRIORITY_HIGH,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_PRIORITY_NORMAL",
|
|
GEARMAN_JOB_PRIORITY_NORMAL,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_PRIORITY_LOW",
|
|
GEARMAN_JOB_PRIORITY_LOW,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_JOB_PRIORITY_MAX",
|
|
GEARMAN_JOB_PRIORITY_MAX,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_ALLOCATED",
|
|
GEARMAN_CLIENT_ALLOCATED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_NON_BLOCKING",
|
|
GEARMAN_CLIENT_NON_BLOCKING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_TASK_IN_USE",
|
|
GEARMAN_CLIENT_TASK_IN_USE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_UNBUFFERED_RESULT",
|
|
GEARMAN_CLIENT_UNBUFFERED_RESULT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_NO_NEW",
|
|
GEARMAN_CLIENT_NO_NEW,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_FREE_TASKS",
|
|
GEARMAN_CLIENT_FREE_TASKS,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_STATE_IDLE",
|
|
GEARMAN_CLIENT_STATE_IDLE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_STATE_NEW",
|
|
GEARMAN_CLIENT_STATE_NEW,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_STATE_SUBMIT",
|
|
GEARMAN_CLIENT_STATE_SUBMIT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_CLIENT_STATE_PACKET",
|
|
GEARMAN_CLIENT_STATE_PACKET,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_ALLOCATED",
|
|
GEARMAN_WORKER_ALLOCATED,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_NON_BLOCKING",
|
|
GEARMAN_WORKER_NON_BLOCKING,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_PACKET_INIT",
|
|
GEARMAN_WORKER_PACKET_INIT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_GRAB_JOB_IN_USE",
|
|
GEARMAN_WORKER_GRAB_JOB_IN_USE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_PRE_SLEEP_IN_USE",
|
|
GEARMAN_WORKER_PRE_SLEEP_IN_USE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_WORK_JOB_IN_USE",
|
|
GEARMAN_WORKER_WORK_JOB_IN_USE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_CHANGE",
|
|
GEARMAN_WORKER_CHANGE,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_GRAB_UNIQ",
|
|
GEARMAN_WORKER_GRAB_UNIQ,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_TIMEOUT_RETURN",
|
|
GEARMAN_WORKER_TIMEOUT_RETURN,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_START",
|
|
GEARMAN_WORKER_STATE_START,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_FUNCTION_SEND",
|
|
GEARMAN_WORKER_STATE_FUNCTION_SEND,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_CONNECT",
|
|
GEARMAN_WORKER_STATE_CONNECT,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_GRAB_JOB_SEND",
|
|
GEARMAN_WORKER_STATE_GRAB_JOB_SEND,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_GRAB_JOB_RECV",
|
|
GEARMAN_WORKER_STATE_GRAB_JOB_RECV,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
REGISTER_LONG_CONSTANT("GEARMAN_WORKER_STATE_PRE_SLEEP",
|
|
GEARMAN_WORKER_STATE_PRE_SLEEP,
|
|
CONST_CS | CONST_PERSISTENT);
|
|
/* CONST_GEN_STOP */
|
|
|
|
return SUCCESS;
|
|
}
|
|
|
|
PHP_MSHUTDOWN_FUNCTION(gearman) {
|
|
return SUCCESS;
|
|
}
|
|
|
|
PHP_MINFO_FUNCTION(gearman) {
|
|
char port_str[6];
|
|
|
|
php_info_print_table_start();
|
|
php_info_print_table_header(2, "gearman support", "enabled");
|
|
php_info_print_table_row(2, "extension version", PHP_GEARMAN_VERSION);
|
|
php_info_print_table_row(2, "libgearman version", gearman_version());
|
|
php_info_print_table_row(2, "Default TCP Host", GEARMAN_DEFAULT_TCP_HOST);
|
|
snprintf(port_str, 6, "%u", GEARMAN_DEFAULT_TCP_PORT);
|
|
php_info_print_table_row(2, "Default TCP Port", port_str);
|
|
php_info_print_table_end();
|
|
}
|
|
|
|
/* Module config struct. */
|
|
zend_module_entry gearman_module_entry = {
|
|
STANDARD_MODULE_HEADER,
|
|
"gearman",
|
|
ext_functions,
|
|
PHP_MINIT(gearman),
|
|
PHP_MSHUTDOWN(gearman),
|
|
NULL,
|
|
NULL,
|
|
PHP_MINFO(gearman),
|
|
PHP_GEARMAN_VERSION,
|
|
STANDARD_MODULE_PROPERTIES
|
|
};
|
|
|
|
#ifdef COMPILE_DL_GEARMAN
|
|
ZEND_GET_MODULE(gearman)
|
|
#endif
|