PHP Conference Japan 2024

預定義常數

以下常數由這個擴充定義,並且只有在擴充被編譯到 PHP 中或在執行時動態載入時才會可用。

傳回值。請務必檢查 GearmanClient::error()GearmanWorker() 的字串錯誤,因為它可能包含更多詳細資訊

GEARMAN_SUCCESS (整數)
執行的動作已成功。
GEARMAN_IO_WAIT (整數)
在非阻塞模式下,遇到一個會阻塞的事件。
GEARMAN_ERRNO (整數)
系統錯誤。請檢查 GearmanClient::errno()GearmanWorker::errno() 以取得返回的系統錯誤碼。
GEARMAN_NO_ACTIVE_FDS (整數)
呼叫 GearmanClient::wait()GearmanWorker() 時沒有任何連線。
GEARMAN_UNEXPECTED_PACKET (整數)
表示 gearmand 中發生嚴重錯誤。僅適用於 GearmanWorker
GEARMAN_GETADDRINFO (整數)
DNS 解析失敗(無效的主機、端口等)。
GEARMAN_NO_SERVERS (整數)
在提交作業或任務之前未呼叫 GearmanClient::addServer()
GEARMAN_LOST_CONNECTION (整數)
在請求期間失去連線。
GEARMAN_MEMORY_ALLOCATION_FAILURE (整數)
記憶體配置失敗(記憶體不足)。
GEARMAN_SERVER_ERROR (整數)
Gearman 伺服器發生錯誤,無法正常處理請求。
GEARMAN_WORK_DATA (整數)
使用 GearmanClient::do() 時,透過 GearmanClient::returnCode() 取得的通知返回碼。用於以執行中作業的資料更新用戶端。當 worker 需要在長時間執行的作業期間傳送更新、傳送部分結果或清空資料時,會使用此程式碼。
GEARMAN_WORK_WARNING (整數)
使用 GearmanClient::do() 時,透過 GearmanClient::returnCode() 取得的通知返回碼。以警告更新用戶端。行為類似於 GEARMAN_WORK_DATA,但應被視為警告而非正常的回應資料。
GEARMAN_WORK_STATUS (整數)
使用 GearmanClient::do() 時,透過 GearmanClient::returnCode() 取得的通知返回碼。用於更新長時間執行作業的狀態。使用 GearmanClient::doStatus() 取得任務的完成百分比。
GEARMAN_WORK_EXCEPTION (整數)
使用 GearmanClient::do() 時,透過 GearmanClient::returnCode() 取得的通知返回碼。表示作業因特定例外狀況而失敗。
GEARMAN_WORK_FAIL (整數)
使用 GearmanClient::do() 時,透過 GearmanClient::returnCode() 取得的通知返回碼。表示作業失敗。
GEARMAN_COULD_NOT_CONNECT (整數)
無法連線到伺服器。
GEARMAN_INVALID_FUNCTION_NAME (整數 (int))
嘗試註冊一個 NULL 的函式名稱,或使用回呼介面但未指定回呼函式。
GEARMAN_INVALID_WORKER_FUNCTION (整數 (int))
嘗試使用 NULL 回呼函式註冊函式。
GEARMAN_NO_REGISTERED_FUNCTIONS (整數 (int))
當 Worker 收到一個它未註冊的函式的工作時。
GEARMAN_NO_JOBS (整數 (int))
對於非阻塞 Worker,當 GearmanWorker::work() 沒有任何活動工作時。
GEARMAN_ECHO_DATA_CORRUPTION (整數 (int))
GearmanClient::echo()GearmanWorker::echo() 之後,返回的資料與發送的資料不符。
GEARMAN_NEED_WORKLOAD_FN (整數 (int))
當用戶端選擇串流任務的工作負載,但未指定工作負載回呼函式時。
GEARMAN_PAUSE (整數 (int))
對於非阻塞用戶端任務介面,可以從任務回呼函式返回以「暫停」呼叫並從 GearmanClient::runTasks() 返回。再次呼叫 GearmanClient::runTasks() 以繼續。
GEARMAN_UNKNOWN_STATE (整數 (int))
內部用戶端/Worker 狀態錯誤。
GEARMAN_SEND_BUFFER_TOO_SMALL (整數 (int))
內部錯誤:由於硬編碼的緩衝區大小,嘗試在一個原子區塊中刷新比可能更多的資料。
GEARMAN_TIMEOUT (整數 (int))
達到用戶端/Worker 設定的逾時限制。

GearmanClient 選項

GEARMAN_CLIENT_GENERATE_UNIQUE (整數 (int))
為每個任務產生一個唯一 ID (UUID)。
GEARMAN_CLIENT_NON_BLOCKING (整數 (int))
以非阻塞模式執行用戶端。
GEARMAN_CLIENT_UNBUFFERED_RESULT (整數 (int))
允許用戶端分塊讀取資料,而不是讓程式庫緩衝整個資料結果並將其傳回。
GEARMAN_CLIENT_FREE_TASKS (整數 (int))
任務完成後自動釋放任務物件。這是此擴充功能中的預設設定,可防止記憶體洩漏。

GearmanWorker 選項

GEARMAN_WORKER_NON_BLOCKING (int 整數)
以非阻塞模式運行 worker。
GEARMAN_WORKER_GRAB_UNIQ (int 整數)
除了作業控制碼之外,還會返回指派給用戶端的唯一 ID。

Gearman 基本設定

GEARMAN_DEFAULT_TCP_HOST (string 字串)
GEARMAN_DEFAULT_TCP_PORT (int 整數)
GEARMAN_DEFAULT_SOCKET_TIMEOUT (int 整數)
GEARMAN_DEFAULT_SOCKET_SEND_SIZE (int 整數)
GEARMAN_DEFAULT_SOCKET_RECV_SIZE (int 整數)
GEARMAN_MAX_ERROR_SIZE (int 整數)
GEARMAN_PACKET_HEADER_SIZE (int 整數)
GEARMAN_JOB_HANDLE_SIZE (int 整數)
GEARMAN_OPTION_SIZE (int 整數)
GEARMAN_UNIQUE_SIZE (int 整數)
GEARMAN_MAX_COMMAND_ARGS (int 整數)
GEARMAN_ARGS_BUFFER_SIZE (int 整數)
GEARMAN_SEND_BUFFER_SIZE (int 整數)
GEARMAN_RECV_BUFFER_SIZE (int 整數)
GEARMAN_WORKER_WAIT_TIMEOUT (int 整數)

新增註釋

使用者貢獻的註釋 5 項註釋

ion dot dulgheru at gmail dot com
12 年前
更新 (gearman 0.35)

GEARMAN_NO_REGISTERED_FUNCTION = 33
GEARMAN_NO_REGISTERED_FUNCTIONS = 34
GEARMAN_NO_JOBS = 35
GEARMAN_ECHO_DATA_CORRUPTION = 36
GEARMAN_NEED_WORKLOAD_FN = 37
GEARMAN_PAUSE = 38
GEARMAN_UNKNOWN_STATE = 39
GEARMAN_PTHREAD = 40
GEARMAN_PIPE_EOF = 41
GEARMAN_QUEUE_ERROR = 42
GEARMAN_FLUSH_DATA = 43
GEARMAN_SEND_BUFFER_TOO_SMALL = 44
GEARMAN_IGNORE_PACKET = 45
GEARMAN_UNKNOWN_OPTION = 46
GEARMAN_TIMEOUT = 47
GEARMAN_ARGUMENT_TOO_LARGE = 48
GEARMAN_MAX_RETURN = 49
Shane Harter
14 年前
我到處尋找 Gearman 各個常數值的傾印資訊,最後在 Gearman 的原始碼中找到了。

如果您曾經只 echo 回傳碼,您會發現這很有用。

GEARMAN_SUCCESS = 0
GEARMAN_IO_WAIT = 1
GEARMAN_SHUTDOWN = 2
GEARMAN_SHUTDOWN_GRACEFUL = 3
GEARMAN_ERRNO = 4
GEARMAN_EVENT = 5
GEARMAN_TOO_MANY_ARGS = 6
GEARMAN_NO_ACTIVE_FDS = 7
GEARMAN_INVALID_MAGIC = 8
GEARMAN_INVALID_COMMAND = 9
GEARMAN_INVALID_PACKET = 10
GEARMAN_UNEXPECTED_PACKET = 11
GEARMAN_GETADDRINFO = 12
GEARMAN_NO_SERVERS = 13
GEARMAN_LOST_CONNECTION = 14
GEARMAN_MEMORY_ALLOCATION_FAILURE = 15
GEARMAN_JOB_EXISTS = 16
GEARMAN_JOB_QUEUE_FULL = 17
GEARMAN_SERVER_ERROR = 18
GEARMAN_WORK_ERROR = 19
GEARMAN_WORK_DATA = 20
GEARMAN_WORK_WARNING = 21
GEARMAN_WORK_STATUS = 22
GEARMAN_WORK_EXCEPTION = 23
GEARMAN_WORK_FAIL = 24
GEARMAN_NOT_CONNECTED = 25
GEARMAN_COULD_NOT_CONNECT = 26
GEARMAN_SEND_IN_PROGRESS = 27
GEARMAN_RECV_IN_PROGRESS = 28
GEARMAN_NOT_FLUSHING = 29
GEARMAN_DATA_TOO_LARGE = 30
GEARMAN_INVALID_FUNCTION_NAME = 31
GEARMAN_INVALID_WORKER_FUNCTION = 32
GEARMAN_NO_REGISTERED_FUNCTIONS = 33
GEARMAN_NO_JOBS = 34
GEARMAN_ECHO_DATA_CORRUPTION = 35
GEARMAN_NEED_WORKLOAD_FN = 36
GEARMAN_PAUSE = 37
GEARMAN_UNKNOWN_STATE = 38
GEARMAN_PTHREAD = 39
GEARMAN_PIPE_EOF = 40
GEARMAN_QUEUE_ERROR = 41
GEARMAN_FLUSH_DATA = 42
GEARMAN_SEND_BUFFER_TOO_SMALL = 43
GEARMAN_IGNORE_PACKET = 44
GEARMAN_UNKNOWN_OPTION = 45
GEARMAN_MAX_RETURN = 46
michaelhfranze at gmail dot com
9 年前
如果您收到

錯誤 26 GEARMAN_COULD_NOT_CONNECT (整數)

而且您正在執行 SELinux,則需要設定

setsetbool -P http_can_network_connect = 1
y_inaura at hm-solution dot jp
9 年前
從 33 號開始遺漏了回傳碼。
我認為,正確的回傳碼是這個。

GEARMAN_SUCCESS = 0
GEARMAN_IO_WAIT = 1
GEARMAN_SHUTDOWN = 2
GEARMAN_SHUTDOWN_GRACEFUL = 3
GEARMAN_ERRNO = 4
GEARMAN_EVENT = 5
GEARMAN_TOO_MANY_ARGS = 6
GEARMAN_NO_ACTIVE_FDS = 7
GEARMAN_INVALID_MAGIC = 8
GEARMAN_INVALID_COMMAND = 9
GEARMAN_INVALID_PACKET = 10
GEARMAN_UNEXPECTED_PACKET = 11
GEARMAN_GETADDRINFO = 12
GEARMAN_NO_SERVERS = 13
GEARMAN_LOST_CONNECTION = 14
GEARMAN_MEMORY_ALLOCATION_FAILURE = 15
GEARMAN_JOB_EXISTS = 16
GEARMAN_JOB_QUEUE_FULL = 17
GEARMAN_SERVER_ERROR = 18
GEARMAN_WORK_ERROR = 19
GEARMAN_WORK_DATA = 20
GEARMAN_WORK_WARNING = 21
GEARMAN_WORK_STATUS = 22
GEARMAN_WORK_EXCEPTION = 23
GEARMAN_WORK_FAIL = 24
GEARMAN_NOT_CONNECTED = 25
GEARMAN_COULD_NOT_CONNECT = 26
GEARMAN_SEND_IN_PROGRESS = 27
GEARMAN_RECV_IN_PROGRESS = 28
GEARMAN_NOT_FLUSHING = 29
GEARMAN_DATA_TOO_LARGE = 30
GEARMAN_INVALID_FUNCTION_NAME = 31
GEARMAN_INVALID_WORKER_FUNCTION = 32
GEARMAN_NO_REGISTERED_FUNCTIONS = 34
GEARMAN_NO_JOBS = 35
GEARMAN_ECHO_DATA_CORRUPTION = 36
GEARMAN_NEED_WORKLOAD_FN = 37
GEARMAN_PAUSE = 38
GEARMAN_UNKNOWN_STATE = 39
GEARMAN_PTHREAD = 40
GEARMAN_PIPE_EOF = 41
GEARMAN_QUEUE_ERROR = 42
GEARMAN_FLUSH_DATA = 43
GEARMAN_SEND_BUFFER_TOO_SMALL = 44
GEARMAN_IGNORE_PACKET = 45
GEARMAN_UNKNOWN_OPTION = 46
GEARMAN_MAX_RETURN = 52
匿名
2 年前
有一個 GEARMAN_WORKER_GRAB_JOB_IN_USE 常數,允許您重試已被相同或其他 worker 結束的工作(以非 0 程式碼不成功地結束)
To Top