2016-05-12 20 views
2

ローカルホストのGearmanサーバーマシンで複数のワーカーを使用しています。 私はこのワーカーをどこか別の場所で実行すると、このタスクを実行するために使用しているすべてのライブラリを移動する必要があります。私は正しい?ギアマンを稼働するワーカー複数のマシンでPHPコード

例:このスクリプトでは、FILEクラスを使用しています。このクラスも複数のライブラリを使用しています。

namespace app\controllers; 
use app\file\File; 

require_once 'vendor/autoload.php'; 

$worker = new \GearmanWorker(); 
$worker->addServer(); 

$worker->addFunction('parse_file', function($job){ 
    echo "entrou no add function!<br>"; 
    print_r ($job->workload()); 
    sleep(2); 
    new File($job->workload()); # this class parses the files content in database 
}); 

while($worker->work()) 
{ 
    if ($worker->returnCode() != GEARMAN_SUCCESS) 
    { 
    echo "return_code: " . $worker->returnCode() . "\n"; 
    break; 
    } 
} 
+0

申し訳ありません。私はその質問をよく理解していません。別のサーバーで「従業員」を実行する必要がある場合は、コードを移動する必要があります。 Gearmanを別のサーバーに移動する場合は、「addServer」 - ホスト –

+0

を追加する必要があります。コードを移動すると、作業者が使用するすべてのライブラリとクラスを移動することができますか?常に各マシンのアプリケーションを複製するようなのですか? –

+0

これは必要なものとコードの構造の仕方によって異なります。あなたはworker.phpファイルを作成し、コピーして実行することができます。あなたはpharパッケージを収集することができ、あなたのコードは単一のファイルになります...しかし、あるマシンのコードを他のマシンで実行することはできません。 –

答えて

1

答えは「はい」です。作業者が実行する各マシンにライブラリのコピーが必要です。 FILEクラスおよびすべての依存関係が必要になります。

マシンごとにコードベースのコピーが1つだけ必要ですが、複数のワーカーインスタンスを実行できます。

関連する問題