(PECL gearman >= 0.6.0)
GearmanWorker::wait — 等待來自其中一個工作伺服器的活動
在非阻塞 I/O 模式下操作時,使 worker 等待來自其中一個 Gearman 工作伺服器的活動。失敗時,會發出一個帶有最後一個遇到的 Gearman 錯誤的 E_WARNING
。
這個函式沒有參數。
範例 #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());
}
?>