GearmanとGearmanManagerのサイクル全体はまだ初めてです。サーバーが動作していて、サーバーの起動時にジョブがすでにキュー(MySQLテーブル)にあるかどうかを確認しました。ただし、PHPから、可能であればワーカーの内部から、キューに新しいジョブを追加できる必要があります。
現在、新しいコードベースの展開で作成する仕事があります。これは実行する最初のジョブであり、その目的はレポート用のデータを収集して保存することです。
これは毎正時に実行する必要があるので、このwhen_to_run
コラムを利用したいと思います。Gearmanのドキュメントを熟考してきましたが、実際にキューにジョブを追加する方法についてはまだ混乱しています。
私は実行してみました:
<?php
$gm = new GearmanClient;
$gm->addServer();
$gm->doBackground('Metadata_Ingest_Report', '', com_create_guid());
ちなみに、はい、php-pecl-uuidをインストールしています。
上記のコードはハングし、何もしません。DBにジョブが追加されることはなく、何も起こりません。
これは、仕事がどのように送られるかを完全に理解しておらず、RTMに最善を尽くしているためですが、運がありません。
したがって、私に指摘できることがある場合、または誰かがMySQLキューにジョブをセットアップして追加する方法を説明する時間があれば、GearmanManagerのワーカーがそれらをピックアップするのは素晴らしいことです。
編集:したがって、を呼び出す必要があるよう$gm->addServer('127.0.0.1')
です。ドキュメントによると127.0.0.1
、デフォルトであると想定されていますが、PHP5.4.11を実行している場合はそうではないようです。$gm->runTasks()
の後に呼び出すと、タスクを実行できるようになりました$gm->addTask()
。呼び出すだけ$gm->addTask()
で、タスクがDBに追加され、GearmanManagerがそれを確認してスプールします。まだ掘っています...
よろしく、
アンドリュー