問題タブ [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.
php - Symfony2 - symfony2 コマンドを起動するプロセス
私の目標は、サーバーの応答がレンダリングされる前にユーザーが待たないように、バックグラウンドで時間のかかる機能を起動することです。
コントローラーから非同期プロセスを起動する Symfony プロジェクトがあります。このプロセスは、別のコントローラーを呼び出す Symfony コマンドを起動します。
問題は、プロセスを呼び出しているときですstart()
その後、プロセスでは何も起こりませんが、リダイレクトと後で実行した他のコードは機能します。
しかし、もしそうなら
その後、プロセスは正常に機能しますが、ビューをレンダリングするにはプロセスが終了するまで待つ必要があります。
私が間違っていることは何ですか?
php - Symfony Process を使用して PHP でインタラクティブなプロセスを制御する
ssh-addを使用して新しいキーを追加することにより、システムssh-agentを制御しようとしています。このために、私はSymfony Processコンポーネントを使用しています。
このコードを Web サイトから実行すると問題なく動作しますが、同じコードをシェル/コンソールで実行すると ssh-add プロセスがハングアップします。Enter passphrase for <path to key>:
コードの簡略化されたバージョンは次のようになります
上記のコードでわかるように、 を呼び出し、環境ssh-add
で を設定して、エージェントと通信できるようにし、入力でパスワードを送信します。前に言ったように、これを Web コンテキストで実行すると動作しますが、シェル/コンソール コンテキストではハングします。SSH_AUTH_SOCK
ssh-add
コンソールで実行するときにstrace
of を実行しました。関連する部分は次のようになります
ご覧のとおり、書き込みは無視されているようで、ssh-add
プログラムは入力待ちのブロックを開始します。
php - symfony/process - プロセスが静かに起動しない
新しい symfony2 プロジェクト (ここで説明するインストール) で、リクエストの一部としてコンソール プロセスを開始したいと思います。アプリは、nginx + php-fpm を備えた「標準」の ubuntu 14.04 ボックスで実行されます。
次のコントローラ コードを検討してください。
/command にリクエストを発行すると、期待どおりの結果が得られ、プロセスが開始されます。たとえば、htop などで表示されます。このリクエストを再度発行すると、期待どおりの結果が得られますが、開始するプロセスがどこにも表示されません。エラーも何もありません。
php5-fpm サービスを再起動すると、リクエストによって 1 つのプロセスを再度開始できるようになるため、基本的には、リクエストごとに php サービス全体を再起動する必要があります。したがって、これはおそらくプログラミングの問題ではありません。でも、正直まだわかりません。この問題は、前にSymfony2 - process launching a symfony2 command のstackoverflow で説明されていましたが、exec による回避策がうまくいきません。
誰かが手がかりを持っていますか?
ありがとう、よろしく、ジョジョ
php - Symfony2 のバックグラウンド プロセスにアクセスする
Process コンポーネントを使用して Symfony2 でバックグラウンド プロセスを作成し、次のようにバックグラウンドで実行したいと考えています。
ここで実行したいスクリプトは無期限に (while (true)
またはそのようなもので) 実行され、コンソール コマンドまたはコントローラーから強制終了できるはずです。
問題は、作成されたものとは異なるコンテキストから Symfony のそのようなプロセスに (たとえばコントローラーから) アクセスするにはどうすればよいかということです。つまり、元のProcess
インスタンスなしで? ルートへのリクエストcreate_process
がプロセスを開始し、リクエストがkill_process
それを強制終了するとします。それは可能ですか?
私が考えることができる 1 つの方法は、プロセス オブジェクトをシリアル化してデータベースに格納することですが、このソリューションには多くの問題があるようです。
php - Laravel\Symfony Process コンポーネントが新しいプロセスの開始に失敗する
Laravel プロジェクトで Symfony が提供する Process コンポーネントを使用しています: http://symfony.com/doc/current/components/process.html。
これが私のコードです:
したがって、ここでは特別なことは何もありません。ただのクックブック ソリューションです。ただし、次のエラーが発生します。
ログに何もないため、何が問題なのかわかりません。問題があれば、Windows Server 2008 R2 で実行しています。
php - Symfony Process コンポーネントを使用した Ajax ポーリング
Symfony Process コンポーネントでのタスクの進行状況に関する増分出力を返す長時間実行タスクを開始しています。
例の 1 つはリアルタイム出力を取得する方法を示し、別の例は非同期タスクを実行する方法を示します。
私が達成しようとしているのは、 getIncrementalOutput の結果を ajax ポーリング関数に戻して、フロントエンドをリアルタイムで更新できるようにすることです。
私のajax呼び出しが戻るのに1分かかり、その時までにタスクが終了するため、どちらの場合でも process->start() がブロックされているようです。
進行状況をデータベースまたはファイルに書き込むことを避け、実行中の PHP タスクから直接出力を取得しようとしていると思います。
それが可能かどうかはわかりません。
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 です。
いくつかのコード (関連するスニペット)
聞く
消費
php - Symfony2 アプリケーションのコントローラー内でコマンドを実行し、リアルタイムで出力を Twig テンプレートに出力する方法
Symfony2 アプリケーションのコントローラー内で長時間持続するコマンドを実行し、端末の出力をリアルタイムでユーザーに返す必要があります。
私はこれを読みました:
http://symfony.com/doc/current/components/process.html#getting-real-time-process-output
Twig テンプレートで端末出力をリアルタイムで印刷する方法がわかりません。
編集: Matteo のコードとユーザーのコメントのおかげで、最終的な実装は次のとおりです。