Home  >  Article  >  Backend Development  >  php pcntl usage

php pcntl usage

藏色散人
藏色散人Original
2021-03-30 09:49:123644browse

php Usage of pcntl: First create a PHP sample file; then use the PCNTL series of functions to process a transaction; finally, use a "$pids" array to let the main process wait for all processes to complete before ending.

php pcntl usage

The operating environment of this article: windows7 system, PHP7.1 version, DELL G3 computer

PHP’s pcntl multi-process usage example

This article mainly introduces the usage of pcntl multi-process in PHP. It analyzes the usage skills of pcntl multi-process operation with examples. It is of great practical value. Friends in need can refer to this article.

The example describes the usage of PHP's pcntl multi-process. Share it with everyone for your reference. The specific analysis is as follows:

PHP can also handle a transaction with multiple processes using the PCNTL series of functions. For example, I need to obtain 800,000 pieces of data from the database and then perform a series of subsequent processing. At this time, should I use a single process? You can wait until today next year. So you should use the pcntl function.

Suppose I want to start 20 processes and divide the 1-80w data into 20 parts. The main process waits for all child processes to finish before exiting:

$max = 800000;
$workers = 20;
$pids = array();
for($i = 0; $i < $workers; $i++){
  $pids[$i] = pcntl_fork();
  switch ($pids[$i]) {
    case -1:
      echo "fork error : {$i} \r\n";
      exit;
    case 0:
      $param = array(
        &#39;lastid&#39; => $max / $workers * $i,
        &#39;maxid&#39; => $max / $workers * ($i+1),
      );
      $this->executeWorker($input, $output, $param);
      exit;
    default:
      break;
  }
}
foreach ($pids as $i => $pid) {
  if($pid) {
    pcntl_waitpid($pid, $status);
  }
}

Here when pcntl_fork comes out In the future, a pid value will be returned. This pid is 0 in the child process, and is the pid of the child process (>0) in the parent process. If the pid is -1, it means that the fork went wrong.

Using a $pids array allows the main process to wait for all processes to complete before ending it

[Recommended learning: PHP video tutorial]

The above is the detailed content of php pcntl usage. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php. Can it be restarted?Next article:php. Can it be restarted?