1.7.2 swoole_process�����ģ���ʹ��
1.7.2 swoole�����˶���̹���ģ�������PHP��pcntl�������pcntl�IJ�ͬ���ǣ�
- swoole_process�ṩ��pcntlû�еĽ��̼�ͨ��
- swoole_process֧���ض�����������������ӽ�����echo���߶�����������Ա��ض���Ϊ�ӹܵ���ȡ����
- swoole_process��������fpm/apache��Web������
- �ӽ��̿����첽��
���̼�ͨ�ţ�IPC��
�ӽ��̺�����֮�����ͨ���ܵ�ͨ�ţ��������ݡ�IPC�ڶ���̱���о����õ���PHP��pcntlģ��û���ṩIPC�Ĺ��ܣ����Թ����о��ޡ���swoole_process�ṩ����Щ���ܣ����ҷ�װ�˽ӿڡ�ֻ����ýӿڼ�����ɽ��̼�ͨ�š�
$worker_num = 8;
for($i = 0; $i < $worker_num; $i++)
{
$process = new swoole_process('callback_function', $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������������ܵ��ڶ�д���ݡ��������ڿ���ͨ��write/read ���ӽ���д�룬��ȡ���ݡ�
������/����ض���
swoole_process֧���˱�����������ض����ӽ�����echoʱ�����Զ�д��ܵ��������Ǵ�ӡ����Ļ��
�ӽ����첽
swoole_process�������ӽ��̿�����ͬ���ģ�Ҳ�������첽�ġ�
function callback_function_async(swoole_process $worker)
{
//echo "Worker: start. PID=".$worker->pid."\n";
//recv data from master
$GLOBALS['worker'] = $worker;
swoole_event_add($worker->pipe, function($pipe) {
$worker = $GLOBALS['worker'];
$recv = $worker->read();
echo "From Master: $recv\n";
//send data to master
$worker->write("hello master\n");
sleep(2);
$worker->exit(0);
});
}
���Խ��ܵ����뵽swoole_event�м���ʵ���첽�Ľ��̼�ͨ�ţ������ӽ����ڿ���ʹ��swoole_timer/swoole_client/swoole_async��Щ�첽��API������ʹ��swoole_event_addֱ�Ӳ���swoole��EventLoop��
����php-fpm/apache
php-fpm/apache�²�����ִ��fork��ԭ��ܼ�fork̫ԭʼ�ˣ����ʹ�ò���fork����ִ��php-fpm/apache�������Ǻ���������롣
��swoole_process�ǻ���fork�ķ�װ����ִ�д����PHP������ִ����Ϻ��ֱ�ӵ��õײ��exit���˳��ӽ��̣������˷��ա�
��php-fpm/apacheҪ����ʹ�ö���̣�fork���ĺܴ�������ÿ������������һ���ӽ��̣��ǻ��˷Ѻܶ�CPU�� ��php-fpm/apache�����ִ��ִ�� $worker->exit(1); ��ֹ���̡�1.7.3����Ż�����
����
swoole_process 1.7.3 ����������CPU�����á��ػ����̻���ʹ����Ϣ����/�����ڴ�Channel�����ԡ�