ホームページ  >  記事  >  バックエンド開発  >  pcntl_fork を使用して PHP マルチプロセスを実装する例

pcntl_fork を使用して PHP マルチプロセスを実装する例

WBOY
WBOYオリジナル
2016-07-25 08:58:31868ブラウズ
  1. /home/jerry/Public/php-5.4.0/ext/pcntl
コードをコピー

説明: int pcntl_fork ( void ) pcntl_fork() 関数は、PID (プロセス ID) と PPID (親プロセス ID) のみが親プロセスと異なる子プロセスを作成します。 成功すると、生成された子プロセスの PID が親プロセスの実行スレッドに返され、子プロセスの実行スレッドには 0 が返されます。 失敗すると、親プロセス コンテキストで -1 が返され、子プロセスは作成されず、PHP エラーが発生します。 int pcntl_wait ( int &$status [, int $options = 0 ] ) pcntl_wait — フォークの子プロセスのステータスを待つか返す void pcntl_exec ( string $path [, array $args [, array $envs ]] ) pcntl_exec — 現在のプロセス空間で指定されたプログラムを実行します

例:

  1. /**
  2. * pcntl_fork マルチプロセス コード例
  3. * bbs.it-home.org を編集する
  4. */
  5. $cmds=array(
  6. array('/home/jerry/projects/www/test2.php'),
  7. array('/home /jerry/projects/www/test3.php')
  8. );
  9. foreach($cmds as $cmd){
  10. $pid=pcntl_fork();
  11. if($pid==-1){
  12. //プロセスの作成に失敗しました
  13. echo '子プロセスの作成が失敗した場合は -1 を返す';
  14. exit(-1);
  15. }
  16. else if($pid){
  17. //親プロセスは子プロセス番号を取得するため、実行されるロジックは次のとおりです親プロセスによる
  18. pcntl_wait($status,WNOHANG);
  19. }
  20. else{
  21. //サブプロセス処理ロジック
  22. sleep(5);
  23. pcntl_exec('/usr/bin/php',$cmd);
  24. exit(0) );
  25. }
  26. }
  27. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。