問題タブ [pcntl]
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 - pcntl_fork() により親プロセスが機能しなくなる
だから、IPC メッセージをリッスンするこの PHP デーモン ワーカーがあります。奇妙なことに、親プロセス (pcntl_fork からの結果) は、子プロセスが完了するまで [php] < defunct> プロセスを残しますが、スクリプトがコマンドラインから直接ではなく、cronjob から開始された場合のみです。
< defunct> プロセスが悪意を持っていないことは知っていますが、cron ジョブから実行しているときにのみ発生する理由がわかりません。
指示
分岐コード:
出力
ps補助 | grep php
これは apache の既知のバグであることがわかりましたが、なぜ cronjob から実行するとこのバグが発生するのでしょうか?
php - pcntl は同じコードを数回実行します。支援が必要です
私は pcntl を使用して、アプリケーションですべての自動電子メールの送信を担当するクラスで主に構成されている非常に重い CLI php スクリプトを高速化しています。
私の目標は次のとおりです。各プロセスを特定のタスクに割り当てたいのですが、foreach ループ内で使用した実装は、以下のコード例に示すものです。
問題は、プロセスをフォークすると非同期で実行され、親のプロセス スタックのコピーも取得されることです。 私の場合、1 つのタスクが単に複数回実行されるだけです。 私の質問は、このような動作を回避するために、このスクリプトをよりスマートに設計するにはどうすればよいかということです。
コード:
}
前もってありがとう、オレグ。
php - PHP で pcntl_fork() が無効になっているのはなぜですか?
マルチスレッド ソケット アプリケーションをセットアップしようとしましたがpcntl_fork()
、デフォルトで無効になっているため、実行するたびにエラーが発生しました。危ないからとか不安定だから?マルチスレッドの他の方法を探す必要がありますか、それともあまり使用されていないために無効になっているだけですか?
php - PHP フォーク ツールがゾンビ プロセスを生成する
私は PHP フォークの初心者で、このコード サンプルを PHP.net からコピーしただけです。基本的に、デバイスを監視し、データをデータベースに保存するツールがあります。このツールはバックグラウンドで実行されています。
ここに私のコードがあります:
しかし、ツールを実行すると、ゾンビ プロセスが生成されます。サーバー上でこのゾンビプロセスまたは機能していないプロセスを防ぐにはどうすればよいですか? 私を助けてください。前もって感謝します
php - pcntl_fork() が返されました。致命的なエラー: 未定義関数 pcntl_fork() の呼び出し
pcntl_fork() を使用して、XAMPP php プロセスを実行するコマンド ラインをフォークしようとしています。以下のコマンドを実行すると:
私は得る:
誰でもこれを修正する方法を提案できますか?
php - PCNTLモジュールの存在確認方法
簡単な要件チェック スクリプトを作成します。インストールされている必要なすべての PHP モジュールをチェックします。pcntl がインストールされているかどうかを確認する必要があります。ただし、このモジュールは cgi 環境でのみアクセス可能であり、Web クエリからは見えません。extension_loaded('pcntl') と function_exists('pcntl_fork') は両方とも false を返します。このチェックを実行するにはどうすればよいですか?
php - 新しいphpプロセスを開始および終了するには?
クラスのいくつかのメソッドを新しいスレッドで実行するpcntl
ために、拡張機能を使用しようとしています。私は小さなテストメソッドを書きました:PHP
CLI
このメソッドは 10 回呼び出されます。$this->process($data);
コンソールにデータを出力するだけです。私が理解したように、終了後に10個のプロセスを開始し、データを出力する必要があります。しかし、代わりに、メッセージごとに 10 秒待つ必要があります。どこが間違っていますか?
php - phpのdeclare(ticks)とシグナルハンドラの関係は何ですか?
このようなコードがいくつかあり、フォークがどのように機能するかを理解したいのですが、 declare(ticks=1)
. 最初の行に入れると、子プロセスが終了した後、シグナルハンドラーが呼び出されます。これは私が望むものです。しかし、それを削除すると、シグナルハンドラーが呼び出されることはありません! それで、ティックが信号処理にどのように影響するかを知りたいです。