私はpcntl_fork()を使用してXAMPP phpプロセスを実行するコマンドラインをフォークしようとしています。以下のコマンドを実行すると:
$pid = pcntl_fork();
if($pid == -1){
file_put_contents('testlog.log',"\r\nFork Test",FILE_APPEND);
return 1; //error
}
else if($pid){
return 0; //success
}
else{
file_put_contents($log, 'Running...', FILE_APPEND);
}
私は得ます:
Fatal error: Call to undefined function pcntl_fork()
誰でもこれを修正する方法を提案できますか?
PHPがApacheモジュール(XAMPPなど)として使用されている場合、関数 'pcntl_fork'を使用することはできません。pcntl_forkは、CGIモードまたはコマンドラインからのみ使用できます。
この関数を使用すると、次の結果になります:'Fatal error: Call to undefined function: pcntl_fork()'
インストールされているかどうかを確認するには、次のコマンドを実行します。
php -i | grep pcntl
存在し、有効になっている場合、pcntl関数は無効になっている可能性があります。これは、新しいPHP 5.xインストールではデフォルトのようです。確認するには、次のコマンドを実行します。
php -i | grep disable_functions
Pcntl_ *関数のリストが表示された場合は、php.iniファイル(XAMPP内)を編集して、行disable_functions=
をコメント化する必要があります。
this distribution of PHP for OS X)を使用することをお勧めします。これには、現在のバージョンがあり、pcntl
拡張子があることを確認できます。
pcntl_*
関数、PHPでのプロセス制御サポートはデフォルトでは有効になっていません。PHP --enable-pcntl
コンパイル時の構成オプションPHPプロセス制御サポートを有効にするため。
現在、このモジュールは非UNIXプラットフォーム(Windows)では機能しません。
Apacheの一部としてスクリプトを実行すると、同じ問題が発生しました。したがって、私の解決策は、_pcntl_fork
_を含むコードを別のファイルに入れ(_fork.php
_と呼びましょう)、次のようにexec()
を使用して実行することです。
mainFile.php(これはApacheが実行するものです)
_exec('php fork.php',$output);
_
fork.php
_$pid = pcntl_fork();
if($pid == -1){
file_put_contents('testlog.log',"\r\nFork Test",FILE_APPEND);
return 1; //error
}
else if($pid){
return 0; //success
}
else{
file_put_contents($log, 'Running...', FILE_APPEND);
}
_