問題タブ [pheanstalk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
beanstalkd - Pheanstalkとの古い接続
私はbeanstalkdを使用して、一部の作業を他のマシンにオフロードしています。セットアップは少し珍しいです、サーバーはインターネット上にあります(パブリックIP)が、消費者はいくつかの人々の家のadslラインの後ろにいます。そのため、クライアントとしてLinuxサーバーが動的IPを介して送信され、サーバーに接続してジョブを取得します。それはすべてPHPであり、私はpheanstalkライブラリを使用しています。
しばらくの間、すべてがスムーズに実行されますが、その後、adslはIPを変更します(プロバイダーが24時間ごとに切断-再接続を強制します)。クライアントはハングし、「予約」から外れることはありません。
リザーブにタイムアウトを設定すると役立つと思いましたが、そうではありませんでした。どうやら、クライアントはコマンドを発行してブロックし、タイムアウトをチェックすることはありません。(単純な予約ではなく)タイムアウト付きの予約を発行するだけであり、タイムアウトが発生したときにTIME_OUTを返すのはサーバーの責任です。問題は、接続が切断され(ただし、TCP / IPは、いずれかの側が相手側と通信しようとするまで、そのことをまだ認識していません)、クライアントが読み取りをブロックした場合、接続が戻らないことです。
ライブラリは、ローカルで(たとえば、サーバーに接続しようとしたときの)ある種のタイムアウトをサポートしているようですが、このシナリオを想定していないようです。
失効した接続を検出して強制的に再接続するにはどうすればよいですか?プロトコル(およびpheanstalk自体)に何らかのキープアライブがありますか?
ありがとう!
php - pheanstalk useTube()->put() 関数、応答を待たない
私は現在、次のものを持っています:
これは正常に機能$pheanstalk->useTube($tube)->put($data)
しますが、サーバーからの接続応答を待たずに、データをキューに入れようとしてから、楽しい方法で続行するようにしたいと考えています。このサービスが保存しているデータがあると便利ですが、重要ではありません。したがって、負荷の高い時間帯に、プログラムの残りの部分を続行できるようになるまで、タイムアウト期間を待つ必要がないようにしたいと考えています。pheanstalk のサーバー部分からの応答の待機をなくすにはどうすればよいですか?
php - Beanstalkd (pheanstalk 経由) で重複した同時予約が可能ですか?
Pheanstalk を PHP ジョブの基本クラスにラップしようとしています。リザーブと遅延機能を備えたリザーブをテストしていますが、最初のインスタンスがジョブを解放したり、TTR がタイムアウトしたりすることなく、基本クラスの 2 番目のインスタンスからジョブを予約できることがわかりました。これはまさにジョブ キューが防ぐべきものだと思っていたので、これは予想外です。最初のプットと最初のリザーブの beanstalkd コマンドとタイムスタンプを以下に示します。最後に stats-job リクエストも行います。
ここまでは順調ですね。次に、基本クラスの 2 番目のインスタンスから別の予約を行い、続いて別の統計ジョブ リクエストを行います。タイム スタンプが 1 秒以内であり、設定した 300 秒の TTR にはほど遠いことに注意してください。また、この 2 番目の stats-job の出力では、タイムアウトが 0 でリリースが 0 のこのジョブの予約が 2 つあることに注意してください。
私が間違っているかもしれないことについて誰にもアイデアがありますか? 一度に 1 人のワーカーだけがジョブにアクセスできるようにキューに伝えるために何かしなければならないことはありますか? beanstalkd とのセッションを終了すると思われるキューからジョブを取得するとすぐに、pheanstalk インスタンスで「設定解除」を行っています。これにより、Beanstalkd がワーカーが停止したと判断し、タイムアウトなしでジョブを自動的に解放する可能性がありますか? ワーカーの状態を判断するために、beanstalkd がセッション状態にどの程度依存しているかはわかりません。私は、セッションを問題なく開いたり閉じたりできると思っていました。また、Beanstalkd がジョブ操作を結び付けるために気にかけているのはそのジョブ ID だけでしたが、それは私の側では愚かだったかもしれません...これは、ジョブ キューへの私の最初の進出です.
ありがとう!
php - LaravelのPheanstalk、すべてが未処理の応答になりますか?
Laravel 用の Pheanstalk バンドル ( https://github.com/mikelbring/Pheanstalk ) をインストールしました。基本的なサンプル コードに従って、ジョブをキューに渡し、再度取得します。
これは私のコードです:
しかし、実行すると、何も返されていないように、「未処理の応答」エラーが発生します。
誰でも Pheanstalk に精通しており、支援を提供できますか?
ありがとう、アダム。
laravel - Beanstalkd / Pheanstalk - まったく動かない! (ワンプ/PHP/ララベル)
それで、組み込みのLaravel 4でPheanstalkキューを動作させようとしています(beanstalkd libをインストールする必要がありました)。
これで完了です... 私は私の労働者に仕事を送ろうとしています。私がするたびに、このエラーが発生します
ログにも次のエラーが表示されます。
「php artisan queue:listen」を実行するとすぐにループしているようです。
beanstalkd のコンソールをダウンロードし、サーバー localhost:11300 をリッスンするように構成しました。
エラーが発生します:未処理の応答。
httpd.conf を変更し、Listen 11300 を追加して再起動しました。
私が間違っているアイデアはありますか?Beanstalkd のドキュメントはあまり見当たりませんし、Laravel のドキュメントも役に立ちません。
アイデアをありがとう!
php - Beanstalk + Pheanstalk は既存のジョブを遅らせます
私は Beanstalk + Pheanstalk の中級者です。Beanstalk を使用してコア部分 (バックグラウンド プロセス) を開発しています。間違いなく優れたツールですが、私は 1 つの状況で立ち往生しています。Yii フレームワークを使用して豆の木を使用しています。
たとえば、A (Tube - A-Jobs) と B (Tube - B-Jobs) の 2 つのジョブがあり、両方とも別のチューブとワーカーの下にあるとします。B は A に依存しています。B が A の前にワーカーによって最初にフェッチされ、その上でプロセスを開始する可能性があります。その場合、A が実行されるまで B を数秒 (120 秒) 遅らせる必要があります。
私の知る限り、仕事を遅らせる直接的な方法はありません。このためには、ジョブ B を削除し、遅延時間で同じキューに戻す必要があります。ここで間違っている場合は修正してください。
現在の状況では、pheanstalk はジョブ ID とジョブ データのみを提供するため、その場合、実際のチューブ名を取得できません。以下に私のコードを貼り付けます。
さて、予約機能を使って何か仕事があったら、
次のような出力が得られます。Beanstalk がこのジョブを取得したチューブ名を提供していないことがわかります。
私たちが知っているように、単一のワーカーは N チューブで見ることができるので、この仕事を遅らせて同じチューブの下に置きたい場合. ジョブのチューブ名を見つけるにはどうすればよいですか?
ありがとう...
php - beanstalkd ドライバーを使用した Laravel 4.1 メールのキューイング - 「シリアル化を解除するにはデータが不十分です」
私は最初の Laravel アプリに取り組んでおり、電子メールの送信に使用Mail::queue
して電子メールの送信をキューに入れようとすると、奇妙な問題が発生します。
私はもともとsync
ドライバーを使用していましたが、すべて正常に機能していましたが、ドライバーに切り替えたところbeanstalkd
、メールの送信が停止しました。
私の設定は次のとおりです。
- Ubuntu 13.10
- ララベル4.1
- PHP 5.5.3
- 経由でインストールされた Beanstalkd 1.8
apt-get
"pda/pheanstalk": "2.1.*"
のcomposer.json
私が気づいたことは、私が走るたびに
私は得ています:
ドライバーを選択してみましredis
たが、エラーは発生しませんでした。私のマシンでの pheanstalk の実行方法に問題があることは明らかです。
で pheanstalk のバージョンを変更してみましたが、composer.json
どのバージョンを使用しているように見えても、同じ問題が発生します。
問題は、この問題は特に広く文書化されていないようであり、エラーメッセージは実際にはあまり役に立たないということです...
何か提案はありますか?