Home  >  Article  >  PHP Framework  >  The difference between swoole and pcntl

The difference between swoole and pcntl

(*-*)浩
(*-*)浩Original
2019-12-12 11:24:182452browse

The difference between swoole and pcntl

PHP's process control supports Unix-style process creation, program execution, signal processing and process interruption. Process control cannot be used in a Web server environment and may cause unexpected results when used in a Web serving environment.                                                                                                                                                          (Recommended learning: swoole video tutorial)

PCNTL now uses ticks as the callback mechanism for signal processing. The speed of ticks far exceeds the previous processing mechanism. This change follows the same semantics as "user ticks".

You can use the declare() statement to specify locations in your program where callbacks are allowed to occur. This allows us to minimize the overhead of asynchronous event handling. Enabling pcntl when compiling PHP will always incur this overhead, regardless of whether pcntl is actually used in your script.

One tweak is that all pcntl scripts prior to PHP 4.3.0 to make it work, either use declare() in the section (of code) where callbacks are expected to be allowed, or use the new global syntax of declare() to make it work Valid throughout the entire script.

Note: This extension is not available on Windows platforms.

swoole adds a multi-process management module to replace PHP's pcntl. Its difference compared to pcntl is:

swoole_process provides inter-process communication swoole_process that pcntl does not have. Supports redirection of standard input and output. Echo or keyboard input in the child process can be redirected to fetch data from the pipe. The child process can be asynchronous

Inter-process communication (IPC)

The child process and the parent process can communicate through pipes and transfer data. IPC is often used in multi-process programming. PHP's pcntl module does not provide IPC functions, so its functions are limited. The swoole_process provides these functions and encapsulates the interface. Inter-process communication can be completed simply by calling the interface.

$worker_num = 8;
for($i = 0; $i < $worker_num; $i++)
{
    $process = new swoole_process(&#39;callback_function&#39;, $redirect_stdout);
    $pid = $process->start();
    $workers[$pid] = $process;
}
function callback_function(swoole_process $worker)
{
    //echo "Worker: start. PID=".$worker->pid."\n";
    //recv data from master
    $recv = $worker->read();
    echo "From Master: $recv\n";
    //send data to master
    $worker->write("hello master\n");
    sleep(2);
    $worker->exit(0);
}

read/write 2 methods are to read and write data into the pipe. The main process can write and read data to the child process through write/read.

The above is the detailed content of The difference between swoole and pcntl. 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:What does swoole mean?Next article:What does swoole mean?