バックグラウンドで実行するphpスクリプトを作成したいと思います。pcntl_forkが必要です。私はこの関数を使用して子供をフォークします:
function launchchild($programexe,$programvars)
{
//foreach ($tasks as $key => $v){
switch ($pid = pcntl_fork()) {
case -1:
// @fail
die('Fork failed');
break;
case 0:
// @child: Include() misbehaving code here
pcntl_exec($programexe,$programvars);
break;
default:
// @parent
//pcntl_waitpid($pid, $status);
break;
}
//print "Done! :^)\\n\\n";
}
私はそれを以下のようなスニペットですぐに呼び出します:
$parameters = array('/Applications/XAMPP/xamppfiles/htdocs/ping/senario2/master/gather_checks.php', $serialize_triagger, $server_list[$server_choose]);
launchchild('/Applications/XAMPP/xamppfiles/bin/php',$parameters); // fork a child for parallel processing.
そのため、数分間だけ正常に動作します。'ps-ax|でプロセスをチェックしました grepphp'。コードが35エラーを出すまで終わらないプロセスがたくさんあるのを見ました。これは、それを実行するためのメモリがこれ以上ないことを意味します。これは'ps-ax|の結果です。grep php '
ps -ax | grep php
12020 ttys001 0:00.07 /Applications/XAMPP/xamppfiles/bin/php /Applications/XAMPP/xamppfiles/htdocs/ping/senario2/master/main.php
12021 ttys001 0:00.00 (php-5.3.1)
12022 ttys001 0:00.00 (php-5.3.1)
12025 ttys001 0:00.00 (php-5.3.1)
12028 ttys001 0:00.00 (php-5.3.1)
12037 ttys001 0:00.00 (php-5.3.1)
12040 ttys001 0:00.00 (php-5.3.1)
12043 ttys001 0:00.00 (php-5.3.1)
// pcntl_waitpid($ pid、$ status);のコメントを外すと それは問題なく魅力のように機能します。しかし、私は親が子供の仕事を待たせたくありません。どんなことでも役に立ちます。