著者は
以前の出版物で、 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)で完全に機能します