別のphpファイルからphpファイルを実行するとCPUが多すぎます

Arj

私はSOに関する他の質問を同様のタイトルで読んだことがありますが、それはこの質問の内容ではありません。別のPHPスクリプトからPHPスクリプトを実行する方法を知っています。問題は、そうすると、CPUの使用量が多すぎることです。これを減らす方法を知りたいのですが。

index.phpという単純なフロントコントローラーのようなスクリプトがあります。クライアントからのGETリクエストを処理し、渡された「action」パラメータに応じて、リクエストを適切なファイルに送信して処理します。たとえば、これはクライアント要求です。

xhttp.open("GET", serverURL + "?action=doSomething" + "&userID=" + user.ID + "&time=" + lastServerTime, true);

index.phpには、「action」パラメーターを適切なファイルにマップする配列があります。

exec('php ' . $url_map[$action] . ' "' . $parameter1 . '"' . ' "' . $parameter2 . '" 2>&1', $output, $return_value);

テストの目的で、CPU使用率を測定し、それをログファイルにダンプする以外に何もしないPHPスクリプトを作成しました。

<?php

function varDumpToFile($parameter1) {
    $file = 'log.txt';
    $dump = $parameter1;

    $output = print_r($dump, true);

    file_put_contents($file, $output, FILE_APPEND | LOCK_EX);
}

varDumpToFile(`ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5`);

?>

これにより、次のようなログファイルが生成されます。

9.0 3123052 user   /opt/cpanel/ea-php56/root/usr/bin/php cputest.php 10 147424 1537625595

明らかに、PHPスクリプトの実行にCPUの9%を費やすべきではありません。比較のために、GETリクエストを介して直接アクセスする同じスクリプトを実行しました。

0.1 3186198 user   lsphp:ic_html/dev/php/cputest.php

0.1%はもっと似ています。しかし、なぜこのPHPスクリプトを別のPHPスクリプトから呼び出すと、CPUが大量に使用されるのでしょうか。オーバーヘッドの多いPHPを実行するときにPHPの「新しいインスタンス」を実行する必要があるためですか?もしそうなら、PHPの「すでに実行中の」インスタンスを使用してPHPスクリプトを実行する方法はありますか?または、これを行う別の方法はありますか?

アレックス・カーシン

私はいつも「疑わしいときはPHPのソースコードを見てください」と言います。ここでは、例えば。その際exec、プロセスをフォークしたり、新しいストリームを作成したり、入力バッファから読み取ったりする必要があります。

また、PHPはコンパイル言語ですが、新しくフォークされたプロセスでは、オペコードコンパイラを実行してオペコード(Javaバイトコードと同様の命令)を生成し、それらを実行する必要があります。あなたはそれについてのすべてをここで読むことができます最後に、フォークごとに別々に、コンパイラを2回実行します。

CPUの9%の価値がありますか?何も思いつきません。多分。そうでないかもしれない。知るか。

「より良い解決策」?PHPの最新バージョンにアップグレードします。PHP 5.6はサポートされなくなり、セキュリティアップデートは3か月で終了します。さらに優れたソリューション-を使用せずに、通常のオブジェクト指向で保守可能なコードを維持しますexecIMO、execあなたのように遊んでも大丈夫です。しかし、それがあなたの製品コードであるならば、私はあなたの後にあなたのコードを維持するであろう人々の魂のために祈ります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルの実行回数が多すぎますか?

分類Dev

別のファイルからJavascript + PHPフォームを実行する

分類Dev

別のPythonファイルからファイルを実行する方法

分類Dev

XDebugを使用してPHPでApacheをしばらく実行した後、MacOSXで「開いているファイルが多すぎます」

分類Dev

php eclipseからexeファイルを実行しますか?

分類Dev

WordPressのfunctions.phpからphpファイルを実行できますか?

分類Dev

php別のファイルからファイルを作成する

分類Dev

別のファイルからJavaを実行する方法は?

分類Dev

PHPからPythonファイルを実行する方法

分類Dev

バッチファイルから.pyファイルを実行するとPyCharmが開きます

分類Dev

別のファイルPHPから値を取得する

分類Dev

別のphpファイルからデータを取得する

分類Dev

.pyファイルを実行すると、別の.pyファイルも実行されます

分類Dev

あるファイルから別のファイルにphp変数を渡しますか?

分類Dev

別のフォルダからjarファイルを実行する方法

分類Dev

別のphpファイルからphpファイル内で定義された関数を使用するとエラーが発生する

分類Dev

別のユーザーから実行可能ファイルを実行する

分類Dev

あるphpファイルから別のphpファイルに変数を渡すのに問題があります

分類Dev

あるphpファイルから別のphpファイルにIDを転送する

分類Dev

あるphpファイルから別のphpファイルに変数を渡す

分類Dev

配列をphpファイルから別のphpファイルにエクスポートする方法

分類Dev

ファイルを開いてそのファイルに対して1行で操作を実行すると、ファイルが閉じますか?

分類Dev

あるphpファイルから別のphpファイルに変数を渡すことはできません

分類Dev

C#からバッチファイルを実行するには時間がかかりすぎる

分類Dev

バッチファイル内の別のディレクトリから実行すると、VBSファイルがフリーズする

分類Dev

別のphpファイルから関数を使用しようとするとPHPの致命的なエラーが発生します

分類Dev

gifをphpファイルとして実行する方法

分類Dev

別のJavaScriptファイルからJavaScriptファイルを実行する方法は?

分類Dev

PHP:どのファイルが別のファイルを必要としているのかをどのように検出しますか?

Related 関連記事

  1. 1

    ファイルの実行回数が多すぎますか?

  2. 2

    別のファイルからJavascript + PHPフォームを実行する

  3. 3

    別のPythonファイルからファイルを実行する方法

  4. 4

    XDebugを使用してPHPでApacheをしばらく実行した後、MacOSXで「開いているファイルが多すぎます」

  5. 5

    php eclipseからexeファイルを実行しますか?

  6. 6

    WordPressのfunctions.phpからphpファイルを実行できますか?

  7. 7

    php別のファイルからファイルを作成する

  8. 8

    別のファイルからJavaを実行する方法は?

  9. 9

    PHPからPythonファイルを実行する方法

  10. 10

    バッチファイルから.pyファイルを実行するとPyCharmが開きます

  11. 11

    別のファイルPHPから値を取得する

  12. 12

    別のphpファイルからデータを取得する

  13. 13

    .pyファイルを実行すると、別の.pyファイルも実行されます

  14. 14

    あるファイルから別のファイルにphp変数を渡しますか?

  15. 15

    別のフォルダからjarファイルを実行する方法

  16. 16

    別のphpファイルからphpファイル内で定義された関数を使用するとエラーが発生する

  17. 17

    別のユーザーから実行可能ファイルを実行する

  18. 18

    あるphpファイルから別のphpファイルに変数を渡すのに問題があります

  19. 19

    あるphpファイルから別のphpファイルにIDを転送する

  20. 20

    あるphpファイルから別のphpファイルに変数を渡す

  21. 21

    配列をphpファイルから別のphpファイルにエクスポートする方法

  22. 22

    ファイルを開いてそのファイルに対して1行で操作を実行すると、ファイルが閉じますか?

  23. 23

    あるphpファイルから別のphpファイルに変数を渡すことはできません

  24. 24

    C#からバッチファイルを実行するには時間がかかりすぎる

  25. 25

    バッチファイル内の別のディレクトリから実行すると、VBSファイルがフリーズする

  26. 26

    別のphpファイルから関数を使用しようとするとPHPの致命的なエラーが発生します

  27. 27

    gifをphpファイルとして実行する方法

  28. 28

    別のJavaScriptファイルからJavaScriptファイルを実行する方法は?

  29. 29

    PHP:どのファイルが別のファイルを必要としているのかをどのように検出しますか?

ホットタグ

アーカイブ