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)で完全に機能します

Source: https://habr.com/ru/post/J243857/


All Articles