0

バックグラウンドで実行するサービスをPHPで実行したい。PHPで関数を使用してみましたexec()が、サービスが無限ループで実行されており、制御がPHPファイルに戻っていません。インターネットでもっと検索しましたが、解決策が見つかりません。このタスクを達成するためのアイデアや参考資料を教えてください。

これは私がやりたいことを参照するためのコードです:-

echo"hello";
exec("raintree.frm");
echo"hello1";

raintree.frm実行したいサービスです。ここで、PHPスクリプトはブラウザ上で「hello」を出力しますが、制御が機能でスタックするため、「hello1」では出力されませんexec()

4

3 に答える 3

3

タイトルにあるように、サービスを別のプロセスで実行する場合は、新しいプロセスを作成してから、そのプロセスでサービスを実行する必要があります。PHPでは、子プロセスで新しいプロセスを作成しpcntl_fork()、サービスを開始できます。このようなもの

echo "hello";
$pid = pcntl_fork();
switch($pid){
    case -1:    // pcntl_fork() failed
        die('could not fork');
    case 0:    // you're in the new (child) process
        exec("raintree.frm");
        // controll goes further down ONLY if exec() fails
        echo 'exec() failed';
    default:  // you're in the main (parent) process in which the script is running
        echo "hello1";
}

より明確にするために、マニュアル(上記のリンクpcntl_fork())を読むだけでなく、トピック(またはむしろsyscalls)fork()とに関するいくつかのC/Unixチュートリアルを見てくださいexec()

于 2012-08-12T11:37:03.893 に答える