問題タブ [symfony-process]

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.

0 投票する
2 に答える
1716 参照

php - Symfony2 - symfony2 コマンドを起動するプロセス

私の目標は、サーバーの応答がレンダリングされる前にユーザーが待たないように、バックグラウンドで時間のかかる機能を起動することです。

コントローラーから非同期プロセスを起動する Symfony プロジェクトがあります。このプロセスは、別のコントローラーを呼び出す Symfony コマンドを起動します。

問題は、プロセスを呼び出しているときですstart()

その後、プロセスでは何も起こりませんが、リダイレクトと後で実行した他のコードは機能します。

しかし、もしそうなら

その後、プロセスは正常に機能しますが、ビューをレンダリングするにはプロセスが終了するまで待つ必要があります。

私が間違っていることは何ですか?

0 投票する
1 に答える
5135 参照

php - Symfony Process を使用して PHP でインタラクティブなプロセスを制御する

ssh-addを使用して新しいキーを追加することにより、システムssh-agentを制御しようとしています。このために、私はSymfony Processコンポーネントを使用しています。

このコードを Web サイトから実行すると問題なく動作しますが、同じコードをシェル/コンソールで実行すると ssh-add プロセスがハングアップします。Enter passphrase for <path to key>:

コードの簡略化されたバージョンは次のようになります

上記のコードでわかるように、 を呼び出し、環境ssh-addで を設定して、エージェントと通信できるようにし、入力でパスワードを送信します。前に言ったように、これを Web コンテキストで実行すると動作しますが、シェル/コンソール コンテキストではハングします。SSH_AUTH_SOCKssh-add

コンソールで実行するときにstraceof を実行しました。関連する部分は次のようになります

ご覧のとおり、書き込みは無視されているようで、ssh-addプログラムは入力待ちのブロックを開始します。

0 投票する
2 に答える
5265 参照

php - symfony/process - プロセスが静かに起動しない

新しい symfony2 プロジェクト (ここで説明するインストール) で、リクエストの一部としてコンソール プロセスを開始したいと思います。アプリは、nginx + php-fpm を備えた「標準」の ubuntu 14.04 ボックスで実行されます。

次のコントローラ コードを検討してください。

/command にリクエストを発行すると、期待どおりの結果が得られ、プロセスが開始されます。たとえば、htop などで表示されます。このリクエストを再度発行すると、期待どおりの結果が得られますが、開始するプロセスがどこにも表示されません。エラーも何もありません。

php5-fpm サービスを再起動すると、リクエストによって 1 つのプロセスを再度開始できるようになるため、基本的には、リクエストごとに php サービス全体を再起動する必要があります。したがって、これはおそらくプログラミングの問題ではありません。でも、正直まだわかりません。この問題は、前にSymfony2 - process launching a symfony2 command のstackoverflow で説明されていましたが、exec による回避策がうまくいきません。

誰かが手がかりを持っていますか?

ありがとう、よろしく、ジョジョ

0 投票する
2 に答える
894 参照

php - Symfony2 のバックグラウンド プロセスにアクセスする

Process コンポーネントを使用して Symfony2 でバックグラウンド プロセスを作成し、次のようにバックグラウンドで実行したいと考えています。

ここで実行したいスクリプトは無期限に (while (true)またはそのようなもので) 実行され、コンソール コマンドまたはコントローラーから強制終了できるはずです。

問題は、作成されたものとは異なるコンテキストから Symfony のそのようなプロセスに (たとえばコントローラーから) アクセスするにはどうすればよいかということです。つまり、元のProcessインスタンスなしで? ルートへのリクエストcreate_processがプロセスを開始し、リクエストがkill_processそれを強制終了するとします。それは可能ですか?

私が考えることができる 1 つの方法は、プロセス オブジェクトをシリアル化してデータベースに格納することですが、このソリューションには多くの問題があるようです。

0 投票する
1 に答える
3274 参照

php - Laravel\Symfony Process コンポーネントが新しいプロセスの開始に失敗する

Laravel プロジェクトで Symfony が提供する Process コンポーネントを使用しています: http://symfony.com/doc/current/components/process.html

これが私のコードです:

したがって、ここでは特別なことは何もありません。ただのクックブック ソリューションです。ただし、次のエラーが発生します。

ログに何もないため、何が問題なのかわかりません。問題があれば、Windows Server 2008 R2 で実行しています。

0 投票する
1 に答える
2890 参照

php - Symfony Process コンポーネントを使用した Ajax ポーリング

Symfony Process コンポーネントでのタスクの進行状況に関する増分出力を返す長時間実行タスクを開始しています。

例の 1 つはリアルタイム出力を取得する方法を示し、別の例は非同期タスクを実行する方法を示します。

私が達成しようとしているのは、 getIncrementalOutput の結果を ajax ポーリング関数に戻して、フロントエンドをリアルタイムで更新できるようにすることです。

私のajax呼び出しが戻るのに1分かかり、その時までにタスクが終了するため、どちらの場合でも process->start() がブロックされているようです。

進行状況をデータベースまたはファイルに書き込むことを避け、実行中の PHP タスクから直接出力を取得しようとしていると思います。

それが可能かどうかはわかりません。

0 投票する
1 に答える
3193 参照

php - symfony/console からバックグラウンドの symfony/プロセスを開始します

メッセージキューを消費する長時間実行される子プロセス (symfony/process) を管理する cli (symfony/console) を作成しようとしています。Consume と Listen という 2 つのコマンドがあります。Consume は Listen のラッパーなので、バックグラウンドで実行できます。Listen は、MQ の長期実行ダンプであり、メッセージ キューに追加された追加メッセージを示します。

問題: Consumeから Listen の cli コマンドを呼び出そうとすると、プロセスが開始されて PID が返されますが、子プロセスがすぐに終了します。実際に実行を続ける複数の Listen プロセスを Consume にスピンオフさせる方法を理解する必要があります。

関連する場合、これが実行される OS は、PHP 5.5 を使用する SLES 12 および Ubuntu 14.04 です。

いくつかのコード (関連するスニペット)


聞く

消費

0 投票する
1 に答える
2922 参照

php - Symfony2 アプリケーションのコントローラー内でコマンドを実行し、リアルタイムで出力を Twig テンプレートに出力する方法

Symfony2 アプリケーションのコントローラー内で長時間持続するコマンドを実行し、端末の出力をリアルタイムでユーザーに返す必要があります。

私はこれを読みました:

http://symfony.com/doc/current/components/process.html#getting-real-time-process-output

Twig テンプレートで端末出力をリアルタイムで印刷する方法がわかりません。

編集: Matteo のコードとユーザーのコメントのおかげで、最終的な実装は次のとおりです。