1

アプリケーションがシャットダウンするまで、そのロジックの無限ループを持つ PHP (Web サイトではなく、アプリケーション) で記述されたアプリケーションがあります。私が気づいた 1 つの問題は、CPU 使用率が非常に高くなることです (明らかに)。過去に行った C++ メソッドを使用して CPU 使用率を下げようとしました。それらの多くは機能していないようです。

私はもう試した:

sleep(1);

と:

time_sleep_until(microtime(true)+0.2);

しかし、どちらも使用率を下げるようには見えません。

任意のヒント?

4

2 に答える 2

1

ジョブを実行する必要がある場合にジョブの実行を構成できます。したがって、この無限スクリプトが毎分何かを実行/チェックする必要がある場合は、変更があるときにそれを実行し、それ以外の場合はスリープすることができます。

問題は、スクリプト自体以外の何かにある可能性があります。これが役立つことを願っている例です。

    set_time_limit(0);
    ignore_user_abort(true);
    $minutes = NULL;

    do {
        try {
            // Run jobs, only when the minute has changed
            $now = getdate();
            if ($now['minutes'] != $minutes) {
                $minutes = $now['minutes'];
            }       
        }
        catch (Exception $e) {
            // Catch here and handle
        }
        sleep(10);
    } while (TRUE);
于 2012-07-23T20:14:46.853 に答える
0

私が知る限り、PHP アプリケーション内でこれを行う方法はありませんが、プロセスを起動するときに、cpulimit. もう 1 つのオプションはnice、プログラムのレベルを変更して、少なくともプログラムがビジー状態のときに他のより重要なプロセスを妨げないようにすることです。

于 2012-07-23T20:05:37.653 に答える