PHP Conference Japan 2024

GearmanWorker::wait

(PECL gearman >= 0.6.0)

GearmanWorker::wait等待來自其中一個工作伺服器的活動

說明

public GearmanWorker::wait(): bool

在非阻塞 I/O 模式下操作時,使 worker 等待來自其中一個 Gearman 工作伺服器的活動。失敗時,會發出一個帶有最後一個遇到的 Gearman 錯誤的 E_WARNING

參數

這個函式沒有參數。

返回值

成功時回傳 true,失敗時回傳 false

範例

範例 #1 以非阻塞模式執行 worker

<?php

echo "開始執行\n";

# 建立 worker 物件
$worker= new GearmanWorker();

# 將 worker 設定為非阻塞模式
$worker->addOptions(GEARMAN_WORKER_NON_BLOCKING);

# 加入預設伺服器 (localhost, port 4730)
$worker->addServer();

# 加入我們的反轉字串函式
$worker->addFunction('reverse', 'reverse_fn');

# 嘗試取得工作
while (@$worker->work() ||
$worker->returnCode() == GEARMAN_IO_WAIT ||
$worker->returnCode() == GEARMAN_NO_JOBS)
{
if (
$worker->returnCode() == GEARMAN_SUCCESS)
continue;

echo
"等待下一個工作...\n";
if (!@
$worker->wait())
{
if (
$worker->returnCode() == GEARMAN_NO_ACTIVE_FDS)
{
# 我們沒有連接到任何伺服器,因此等待一段時間後
# 再嘗試重新連線。
sleep(5);
continue;
}
break;
}
}

echo
"Worker 錯誤: " . $worker->error() . "\n";

function
reverse_fn($job)
{
return
strrev($job->workload());
}


?>

另請參閱

新增註釋

使用者提供的註釋

此頁面沒有使用者提供的註釋。
To Top