GearmanとPHP 5.4(5.6):問題と解決策

著者は以前の出版物で、 GearmanキューサーバーがPHP開発者に開放する興味深い機会を聴衆に伝えようとしました。

この出版物には GearmanのインストールアルゴリズムとPHPの拡張機能が記載されています。 PHP 5.3についてでした。 Debian7およびPHP 5.4では、インストール中またはPHPスクリプトの実行中にエラーが発生することなく、このアルゴリズムは機能しませんが、Gearmanを使用するWebアプリケーションは機能しません。



PHP 5.4では、状況は次のようになります。すべてがインストールされ、すべてが正常で、すべてが開始され、エラーはありません。 ただし、ワーカーはタスクをサーバーに追加しません。

$worker->addFunction();
      
      





trueを返します。

ギャップテンプレート。

明らかな解決策は、pecl gearmanの最新バージョンをインストールしてみることです。

しかし、php5.3の場合のように、libgearmanライブラリバージョンは1以上でインストールされていません。*が必要です。

問題の根本は何ですか?

gearman-job-serverキューサーバーをインストールすると、同じlibgearmanライブラリもシステムにインストールされます。

しかし、判明したように、Debianリポジトリでは、gearman-job-serverのバージョン(およびlibgearmanバージョン)はPECLリポジトリと比較して非推奨になっており、pecl gearmanの最新バージョンをインストールしようとすると上記の結果が得られます。

問題を解決する方法は?

解決策1. ソースから最新のGearman ビルドする

解決策2:pecl gearmanの少し前のバージョンをインストールする

ソリューション2の試行錯誤によって、GearmanキューサーバーとPHP 5.4の拡張機能をインストールするための次のアルゴリズムが見つかりました。

 aptitude install gearman-job-server aptitude install php-pear aptitude install make aptitude install libgearman-dev pecl install gearman-1.0.3 echo 'extension=gearman.so' > /etc/php5/apache2/conf.d/gearman.ini echo 'extension=gearman.so' >/etc/php5/cli/conf.d/gearman.ini
      
      







すべてがOKです。 しかし、重要なニュアンスがあります。

php5.3のバージョンはこちらです

 $worker->addServer();
      
      





または

 $worker->addServer('localhost');
      
      





正常に動作します。

php5.4バージョンでは、コード内の同様の構成体が例外を発生させます。

このようなデザインは機能します

 $worker->addServer('127.0.0.1', 4730);
      
      







上記のインストールの問題と使用のニュアンスを克服すると、結果が得られます。





結論として。 なぜこれらすべてのダンスは、言葉の本当の意味でタンバリンと踊るのですか? Gearmanは本当に必要ですか? この質問に「はい」と答えます。主なことは、キューサーバーを操作するとPHP自体のロジックが変更され、多くの操作が簡単になることです。 著者は、出版物「Working with the Gearman Queue Server」を発表します。この出版物では、アプリケーション構築の手法、ロジック、および監視と制御のためのWebアプリケーションについて説明します。



UPD(2016/03/02):上記の方法はPHP 5.6(Debian 8)で完全に機能します



All Articles