0

http://php.net/manual/en/function.posix-setsid.php pcntl_fork() の例を一番下に見ました 。そのコードは正常に機能しています。PHPスレッドと組み合わせることができますか?http://www.php.net/manual/en/class.thread.php

<?php
    $pid = pcntl_fork(); // fork
    if ($pid < 0)
        exit;
    else if ($pid) // parent
        exit;
    else { // child

        $sid = posix_setsid();

        if ($sid < 0)
            exit;

        for($i = 0; $i <= 60; $i++) { // do something for 5 minutes
            sleep(5);
        }
    }
?>
4

1 に答える 1

1

何を達成したいのかわかりませんが、スレッド化とフォークをランダムに混ぜ合わせたい場合は、それを行う前にこれを読んだほうがよいでしょう:スレッドとフォーク(): 混ぜる前によく考えてください。ターミナルからスレッドを開始します (ただし、プロセスは開始しません)。おそらく問題ないでしょう。for(ねじ切りコードの部分を差し替えるだけです。)

いずれにせよ、メモリ リークのない PHP デーモンを作成することは非常に困難ですが、不可能ではないことに注意してください。特に複雑なクラス構造を使用している場合は、メモリの問題を突き止めるのに多くの時間を費やすことを期待してください。

また、PHP の拡張機能の中には、特に外部バイナリを実行する場合に、スレッド セーフではないものがあります。これを行う前に、よく考えてください。また、別の言語を選択することも検討します。

于 2013-05-16T09:20:29.747 に答える