問題タブ [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 - Silex プロジェクトでの ProcessBuilder の使用
Symfony\Component\Process\ProcessBuilder クラスを使用したいのですが、vendors フォルダー内の Silex コードベースの一部として含まれていることがわかります。私は Silex phar ファイルを使用していますが、Request、Response などの他の Symfony コンポーネントを簡単にインスタンス化できるため、完全な名前空間を使用すると、含めるファイルを正しく見つけることができると想定しています。
ただし、次を使用して作成してインスタンスを作成しようとすると:
クラスが見つからないというエラーが表示されます。これがなぜなのか、プロジェクト内にコンポーネントを個別に含めることなく Silex phar からこのクラスを使用する方法を知っている人はいますか?
php - Symfony2 のサブプロセスで php 関数を実行するにはどうすればよいですか?
バックグラウンドでいくつかの機能を並行して実行したい。
Symfony2 または php でこれを行う良い方法はありますか?
それとも、だけSymfony\Component\Process\Process
ですか?
このプロセスを関数で使用できますか? 実際のコンテキスト (ログインしているユーザーといくつかのセッション データ) が必要なため、関数を外部の php ファイルにソースすることはできません...
php - Symfony2 プロセスはリアルタイムでフィードバックを提供しません
私の考えは、 Symfony2 プロセス クラスを使用してマインクラフト サーバーを起動し、リアルタイムでフィードバックを提供したいと考えています。そこで、プロセス クックブック パートで説明したように、次のコードを試します。
apache2 ユーザーのいくつかの権限の問題のため、sudoers ファイルを次の www-data ALL = (myspecialUser) NOPASSWD: /usr/bin/java
ように変更しました: www-data ユーザーが java コマンドを実行できるようにします。
サーバーはバックグラウンドで起動していますが、リアルタイムの出力が得られないことが問題です。minecraftサーバープロセスをシャットダウン(または強制終了)した場合にのみ、出力が得られます。
リアルタイム出力を取得する方法について何か提案はありますか?
php - Symfony クラスが見つかりません
エラーが発生しています:
Symfony を使うのは初めてです。GitHubサイトからファイルをダウンロードします。ダウンロードしたファイルは Process ディレクトリのものなので、正しいパスを取得するためにフォルダーを作成しました。(Symfony/コンポーネント/プロセス/ダウンロードしたファイル)。
Symfony ディレクトリをメイン ディレクトリ (インデックス ファイルがある場所) に配置しました。
これが Symfony のインストール方法ですか? (フレームワーク全体ではなく、Process サブディレクトリのみが必要であることに注意してください)
今のところ、実行できるかどうかを確認するために、この既製のコードを使用しています。
このエラーが発生するのはなぜですか?どうすれば修正できますか? パスが悪いからでしょうか?
php - コンソールコマンドでコントローラー/アクションを呼び出す
LinkedIn からデータをインポートして、データベースに保存したいと考えています。これをバックグラウンドで実行したい。
そこで、コンソール コマンドを作成します。しかし、コンソール コマンドでコントローラー/アクションを呼び出して、バックグラウンドでコンソール コマンドでインポートおよび保存トランザクションを実行するにはどうすればよいでしょうか?
php - Symfony2 プロセス コンポーネント - パイプを作成して新しいプロセスを起動できない
Symfony2 Process コンポーネントを使用して、プロセスのプールを手動で管理しています。
以下の例では、2 秒ごとに 2 つの単純なプロセスを再起動し、何が起こるかを監視します。これらのプロセスを数百回再起動すると、アプリケーションが壊れます。
実行が停止し、次の PHP 警告が表示されます。
そして、次の例外が Symfony Process コンポーネントによってスローされます:
開いているプロセスの総数を手動で監視しましたが、予想される制限を超えることはありません。
以下の簡略化されたスニペットは Symfony2 コマンドの一部であり、CLI から実行されています (例: app/console hamster:run):
このアプリケーションは、OS X 10.8.4 を実行している MAC サーバーで実行されています。
この問題の根本を追求する方法についてのヒントをいただければ幸いです。
更新 #1:関数を単純化して、次のような基本的なコマンドで動作するようls
にしdate
、テストを高速化しました。約 1000 ~ 1500 のプロセスを開始および停止した後でも、Process コマンドが失敗したように見えます。
各プロセスで正しく呼び出されていないのではないかと疑っていproc_close()
ましたが、さらに調査したところ、そうではないことがわかりました。
symfony - Symfony プロセスは誰として実行されますか?
を使用するSymfony\Component\Process\Process
場合、コマンドは who? として実行されます。
でコマンドを試しましたwhoami
がProcess
、void が返されました???
php - Symfony2 Process を使用して複数の PHP ワーカーの子プロセスを管理する
Symfony2 Processを使用して、複数のワーカー子プロセスを持つプロセスを作成したいと考えています。
基本的に、以下のようなスケルトン実行可能なPHPスクリプトがあります
問題は、子ワーカーが終了したらすぐに新しい子ワーカーを生成する方法です。
私の知る限りProcess::start()
、プロセスを非同期で実行する方法です。
だから私がこれを実行すると
これを見ると、子プロセスは非同期で実行されます
たとえばfoo-4-8-20140129154751-20140129154759
、生成されたランダム時間 (8 秒) の前後にファイルが作成されます。
しかし、どのプロセスが終了しているかを知る唯一の方法は、を使用するProcess::wait()
ことですが、それはプロセス全体をブロックします。そのため、子プロセスの終了を待ってメイン ループがブロックされると、別の子プロセスが早期に終了する可能性があります。
php file.php
ほとんどのビジネスロジックは同じコードベースにあるため、最初はコマンドを使用してループ内から別の PHP ファイルを実行したいと考えています。したがって、PHP を使用してこれを最初に試すことは、私の最初の直感です。
だから私の質問は
- 子プロセスが最大数の子の数内で終了した直後に新しい子プロセスを生成する方法はありますが、Symfony2 プロセスを使用してブロックすることはありませんか?
- または、これを行うための成熟したPHPライブラリがありますか(フレームワークではありませんが、私はすでにフレームワークを使用しており、できればPHP 5.3+ライブラリを使用しています)?
- PHPを使用してこれを行うことができない場合、おそらくPythonまたはPERLを使用してこれを行う別の方法はありますか? シンプルな 1 ファイル スクリプト ソリューションが必要です。それとも、構成が小さくコーディングが少ないソフトウェア (できれば Linux にインストール可能) を使用できますか?
アップデート
スーパーバイザーについて知りました。これが私のニーズに合っていることを願っています。したがって、子プロセスを生成する PHP スクリプトを作成する代わりに、無限ループを使用して 1 つのスクリプトを作成し、ブロックしている子プロセスを生成してから、いくつかのスクリプトを実行するようにスーパーバイザーを設定できると考えています。しかし、好奇心のために、誰かが上記の質問に答えてくれるとうれしいです.