問題タブ [proc-open]
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 - PID によるプロセス リソースの取得
Web SSH コンソールを作成したいのですが、2 つの問題が見つかりました。
私がしたいこと。まずstart.php
、次のコードを含むファイルを実行します。
次に、ファイルcommand.php
内に作成されたプロセスでコマンドを実行しstart.php
、そこから結果を取得するファイルを実行します。
cmd
過去に作成したプロセス ( ) にアクセスし、コマンドを送信して結果を取得したいだけです。
実行ごとに新しいプロセスを作成できるのに、なぜこれが問題なのcommand.php
ですか? 新しいプロセスは新しいセッションであるため、過去command.php
の実行で mysql にログインすると、次の実行で再度 mysql にログインする必要があります。新しいプロセスはログに記録されたことを覚えていないためです。
Windows での例。
cmd
PHP で新しいプロセス ( ) を作成します。現在のディレクトリはC:\WebServ\
です。
- コマンドを書きます。
cd /
現在のディレクトリはC:\
.
これは単なる例です。ディレクトリを変更したくないだけです。これは私にとっては問題ではありません。
mysql
問題は、1 つのプロセスを作成し、次の PHP ファイルの実行でそれにアクセスする方法です。たとえば、セッションを記憶したい場合は?
- 機能ごとにプロセスを作成できます
proc_open
。 - でPIDを取得できますが
get_process_status
、現在のPHPファイルが実行される前に作成されたプロセスリソースを取得するにはどうすればよいですか?
そして次の質問ですが、過去に作成したプロセスにアクセスできる場合、作成したプロセスに新しいコマンドを書き込む方法を教えてください。
PHP拡張機能を使用したくありません。ただし、この場合にこれが必要な場合は、それぞれの回答が役に立ちます。
他の PHP 実行で作成されたプロセスにアクセスできない場合はwhile(1)
、PHP 実行の開始時に作成されたプロセスを制御するために使用したいのですが、この場合は必要ないことを願っています。
次に、作成されたプロセスに新しいコマンドを書き込む方法を誰かが知っていることを願っていcmd
ます。
私の質問の解決策に問題がある場合は、cmd.exe
によって開かれたプロセスにコマンドを送信するshell_exec
方法と、各コマンドの応答を受信する方法を教えてくれる回答を受け入れます。
php - proc_openを使用したPHPバックグラウンドプロセス
でプロセスを開きたい
そのステータスを確認する機能はまだあります (つまり、実行中ですか?) 可能ですか?
使おうとすると
そして、
プロセスは実行されていますが、falseを返します...
ありがとう
php - PHP proc_open - プロセス ハンドルをファイルに保存して取得する
次のコードを使用して、proc_open でプロセスを開き、ハンドルとパイプをファイルに保存します。
次に、このファイル ハンドルをファイルから取得する必要があります。次のコードを使用しました。
しかし、ファイルから取得した後に $processHandle と $pipes の var_dump を出力すると、リソースまたはプロセスではなく整数が取得されますが、なぜですか??
もちろん、この時点でパイプを閉じようとすると、エラー、リソースが必要、整数が指定されます。
どうすればこれを機能させることができますか? (注:これは私が探している解決策です)
しかし、別の方法として、プロセスの pid を取得し、この pid を使用してプロセスを停止または強制終了したり、他の処理を行ったりすることもできますが、パイプについてはどうでしょうか。プロセスから/へエラーを読み書きまたは保存するにはどうすればよいですか?
ありがとうございました
symfony - Symfony2 PDF生成
私は PDF を生成する必要があります。私は SpreadPdfGeneratorBundle を使用しています。問題は、このバンドルが私の webHosting "ex2" によって無効にされている "proc_open" 機能を使用していることです。PDF 生成はロケールでうまく機能します。コードは次のとおりです。
エラーのメッセージは次のとおりです。
警告: proc_open() はセキュリティ上の理由から無効になっています (500 内部サーバー エラー)
ご協力ありがとうございました。
php - proc_open を使用して一度だけ開いたファイルから複数の結果を取得するにはどうすればよいですか?
非常に大きなデータ ファイル内から値を返す exec() を使用してコマンドを実行しましたが、何百万回も実行する必要があります。ファイルがループで毎回開かれるのを避けるために、proc_open
効率のためにファイルポインタが一度作成されるベースのソリューションに移行したいのですが、これを行う方法がわかりません。
これは、おそらく各反復でファイルを開く必要があるため、機能しますexec
が遅いバージョンです。
ベースのコードでの私の試みproc_open
は次のとおりです。
これは最初の値を正しく取得しますが、その後の反復ごとにエラーを生成します。
php - IIS で exec と proc_open が異なるユーザーで実行されているのはなぜですか?
Windows Server 2012 R2 および IIS 8.5 でサイトを実行していますが、問題が発生しました。
- 実行する
exec('whoami')
と、 が返されますnt authority\iusr
。 - を実行する
proc_open('whoami', $desc, $pipes)
と、結果はiis apppool\mysite
です。
なぜこうなった?