関数・クラス解説

GearmanClient::do

version:PECL gearman >= 0.5.0 (公式)

Run a single task and return a result [deprecated]

公式リファレンス

書式

public GearmanClient::do ( string $function_name , string $workload [, string $unique ] ) : string

説明

The GearmanClient::do() method is deprecated as of pecl/gearman 1.0.0. Use GearmanClient::doNormal().

パラメータ

function_name
ワーカーが実行するために登録した関数。
workload
シリアライズしたデータ。
unique
タスクを特定するために用いる一意な ID。

返値

A string representing the results of running a task.

サンプル

例1 Simple job submission with immediate return

# Client code echo "Starting\n"; # Create our client object. $gmclient= new GearmanClient(); # Add default server (localhost). $gmclient->addServer(); echo "Sending job\n"; $result = $gmclient->doNormal("reverse", "Hello!"); echo "Success: $result\n"; echo "Starting\n"; # Create our worker object. $gmworker= new GearmanWorker(); # Add default server (localhost). $gmworker->addServer(); # Register function "reverse" with the server. Change the worker function to # "reverse_fn_fast" for a faster worker with no output. $gmworker->addFunction("reverse", "reverse_fn"); print "Waiting for job...\n"; while($gmworker->work()) {   if ($gmworker->returnCode() != GEARMAN_SUCCESS)   {     echo "return_code: " . $gmworker->returnCode() . "\n";     break;   } } function reverse_fn($job) {   return strrev($job->workload()); }

上の例の出力は、たとえば以下のようになります。

Starting Sending job Success: !olleH

例2 Submitting a job and retrieving incremental status

A job is submitted and the script loops to retrieve status information. The worker has an artificial delay which results in a long running job and sends status and data as processing occurs. Each subsequent call to GearmanClient::do() produces status information on the running job.

# Client code # Create our client object. $gmclient= new GearmanClient(); # Add default server (localhost). $gmclient->addServer(); echo "Sending job\n"; # Send reverse job do {   $result = $gmclient->doNormal("reverse", "Hello!");   # Check for various return packets and errors.   switch($gmclient->returnCode())   {     case GEARMAN_WORK_DATA:       echo "Data: $result\n";       break;     case GEARMAN_WORK_STATUS:       list($numerator, $denominator)= $gmclient->doStatus();       echo "Status: $numerator/$denominator complete\n";       break;     case GEARMAN_WORK_FAIL:       echo "Failed\n";       exit;     case GEARMAN_SUCCESS:       break;     default:       echo "RET: " . $gmclient->returnCode() . "\n";       echo "Error: " . $gmclient->error() . "\n";       echo "Errno: " . $gmclient->getErrno() . "\n";       exit;   } } while($gmclient->returnCode() != GEARMAN_SUCCESS); echo "Success: $result\n"; # Worker code echo "Starting\n"; # Create our worker object. $gmworker= new GearmanWorker(); # Add default server (localhost). $gmworker->addServer(); # Register function "reverse" with the server. $gmworker->addFunction("reverse", "reverse_fn"); print "Waiting for job...\n"; while($gmworker->work()) {   if ($gmworker->returnCode() != GEARMAN_SUCCESS)   {     echo "return_code: " . $gmworker->returnCode() . "\n";     break;   } } function reverse_fn($job) {   echo "Received job: " . $job->handle() . "\n";   $workload = $job->workload();   $workload_size = $job->workloadSize();   echo "Workload: $workload ($workload_size)\n";   # This status loop is not needed, just showing how it works   for ($x= 0; $x < $workload_size; $x++)   {     echo "Sending status: " + $x + 1 . "/$workload_size complete\n";     $job->sendStatus($x+1, $workload_size);     $job->sendData(substr($workload, $x, 1));     sleep(1);   }   $result= strrev($workload);   echo "Result: $result\n";   # Return what we want to send back to the client.   return $result; }

上の例の出力は、たとえば以下のようになります。

Worker output:

Starting Waiting for job... Received job: H:foo.local:106 Workload: Hello! (6) 1/6 complete 2/6 complete 3/6 complete 4/6 complete 5/6 complete 6/6 complete Result: !olleH

Client output:

Starting Sending job Status: 1/6 complete Data: H Status: 2/6 complete Data: e Status: 3/6 complete Data: l Status: 4/6 complete Data: l Status: 5/6 complete Data: o Status: 6/6 complete Data: ! Success: !olleH

参考

  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール