PHP が Linux 環境でバックグラウンドプロセスを保護する方法

零到壹度
リリース: 2023-03-23 17:28:01
オリジナル
1574 人が閲覧しました

この記事の内容は、PHP が Linux 環境でバックグラウンド プロセスを保護する方法を共有することです。必要な場合は参考にしてください。

いくつかのシナリオ。次に、メモリや CPU の実行状況の監視など、いくつかのサービスを定期的に提供し続ける必要があります。これらのアプリケーションはクライアント (Web インターフェイス、モバイル アプリなど) とは関係ありません。このビジネス シナリオに対処するには、メモリや CPU を監視する代わりに、バックグラウンド デーモンが役立ちます。

必要な環境

Linux

実装方法

1.phpスクリプトを準備します

/usr/local/src/ ディレクトリに、次のような新しい daemon.php スクリプト ファイル:

<?php  
  
Class Daemon{  
      
    /** 
     * 初始化一个守护进程 
     * @throws Exception 
     */  
    public function init(){  
        //创建一个子进程  
        $pid = pcntl_fork();  
          
        if ($pid == -1) {  
            throw new Exception(&#39;fork子进程失败&#39;);  
        } elseif ($pid > 0) {  
            //父进程退出,子进程变成孤儿进程被1号进程收养,进程脱离终端  
            exit(0);  
        }  
          
        //创建一个新的会话,脱离终端控制,更改子进程为组长进程  
        $sid = posix_setsid();  
        if ($sid == -1) {  
            throw new Exception(&#39;setsid fail&#39;);  
        }  
          
        //修改当前进程的工作目录,由于子进程会继承父进程的工作目录,修改工作目录以释放对父进程工作目录的占用。  
        chdir(&#39;/&#39;);  
          
        /** 
         * 通过上一步,我们创建了一个新的会话组长,进程组长,且脱离了终端,但是会话组长可以申请重新打开一个终端,为了避免 
         * 这种情况,我们再次创建一个子进程,并退出当前进程,这样运行的进程就不再是会话组长。 
         */  
        $pid = pcntl_fork();  
        if ($pid == -1) {  
            throw new Exception(&#39;fork子进程失败&#39;);  
        } elseif ($pid > 0) {  
            //再一次退出父进程,子进程成为最终的守护进程  
            exit(0);  
        }  
        //由于守护进程用不到标准输入输出,关闭标准输入,输出,错误输出描述符  
        fclose(STDIN);  
        fclose(STDOUT);  
        fclose(STDERR);  
    }  
}  
  
$daemon = new Daemon();  
$daemon->init();  
  
//处理业务代码  
while(true) {  
    file_put_contents(&#39;/usr/local/src/log.txt&#39;, time().PHP_EOL, FILE_APPEND);  
    sleep(5);  
}
ログイン後にコピー

    このスクリプトの機能は、5 秒ごとにタイムスタンプをログ ファイルに書き込むことです。 もちろん、これは単なる単純な例です。特定のアプリケーションでは、さまざまなビジネスに応じて特定の業務処理コードを記述する必要もあります。
2. バックグラウンドモードでphpスクリプトを実行します

コマンドラインで次のように入力します:

nohup php /usr/local/src/daemon.php &
ログイン後にコピー

3. コマンドラインでログ出力を表示します。 、次の情報が表示されます:
  1. tail -f /usr/local/src/log.txt
    ログイン後にコピー

次の情報が表示されます:

    まず、PHP を見つける必要があります。のIDプロセス、コマンド:

ps -ef | grep "php /usr/local/src/daemon.php"
ログイン後にコピー

次に、この PID を通じてプロセスを強制終了します

  1. kill -9 22767

このうち、22767はphpバックグラウンドプロセスのPID番号です。

5. 起動時にセルフスタート

これまでの手順で、PHP プロセスを開いたり閉じたりする方法はわかりましたが、実際のアプリケーションでは毎回手動で開くことはできません。ビジネス データが失われるため、起動時にプロセスが自動的に実行されるようにする必要があります。手順は次のとおりです。

/etc/rc.local ファイルで、nohup php /usr/local/src/daemon を変更します。 php & このコマンドを追加するだけです。


以上がPHP が Linux 環境でバックグラウンドプロセスを保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!